做一个平台网站大概多少钱,迁移wordpress到阿里云,长沙制作公园仿竹护栏,网络营销方式和手段N 字形变换
题目:
将一个给定字符串 s 根据给定的行数 numRows #xff0c;以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 PAYPALISHIRING 行数为 3 时#xff0c;排列如下#xff1a;P A H N
A P L S I I G
Y I R
之后#xff0c;你的输…N 字形变换
题目:
将一个给定字符串 s 根据给定的行数 numRows 以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 PAYPALISHIRING 行数为 3 时排列如下P A H N
A P L S I I G
Y I R
之后你的输出需要从左往右逐行读取产生出一个新的字符串比如PAHNAPLSIIGYIR。请你实现这个将字符串进行指定行数变换的函数string convert(string s, int numRows);示例 1
输入s PAYPALISHIRING, numRows 3
输出PAHNAPLSIIGYIR示例 2
输入s PAYPALISHIRING, numRows 4
输出PINALSIGYAHRPI
解释
P I N
A L S I G
Y A H R
P I示例 3
输入s A, numRows 1
输出A解题思路: 创建 numRows 长度的数组然后遍历字符串将每个字符放到对应下标的数组中即可
class Solution {public String convert(String s, int numRows) {int len s.length();if(len 1 || numRows 1) {return s;}ListStringBuilder list new ArrayList(numRows);for(int i 0; i numRows; i) {list.add(new StringBuilder());}int cur 0;char[] ch s.toCharArray();boolean flag true;for(int i 0; i ch.length; i) {char c ch[i];list.get(cur).append(c);if(cur 0 i ! 0) {flag !flag;}if(cur numRows - 1) {flag !flag;}cur cur (flag ? 1 : -1);}StringBuilder ans new StringBuilder();for(StringBuilder sb : list) {ans.append(sb.toString());}return ans.toString(); }
}