将一个给定字符串 s
根据给定的行数 numRows
,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "PAYPALISHIRING"
行数为 3
时,排列如下:
P A H N
A P L S I I G
Y I
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"
。
class Solution {
public String convert(String s, int numRows) {
int len = s.length();
if (numRows == 1) {
return s;
}
StringBuilder[] str = new StringBuilder[numRows];
int index = 0;
int row = 0;
for (int i = 0; i < numRows; i++) {
str[i] = new StringBuilder();
}
while (index < len) {
while (index < len && row < numRows) {
char st = s.charAt(index++);
str[row].append(st);
row++;
}
if (index == len) {
break;
}
row = numRows - 2;
while (index < len && row >=0) {
char st = s.charAt(index++);
str[row].append(st);
row--;
}
row += 2;
}
StringBuilder tt = new StringBuilder();
for (int i = 0; i < numRows; i++) {
tt.append(str[i]);
}
return tt.toString();
}
}
网友评论