Z 字形变换
描述:
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
示例 1:
输入:s = “PAYPALISHIRING”, numRows = 3
输出:“PAHNAPLSIIGYIR”
解释:
P A H N
A P L S I I G
Y I R
示例 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”
答案
public String convert(String s, int numRows) {
if (s == null || s.length() <=0 || numRows == 1) {
return s;
}
int n = 1;
int index = 0;
StringBuilder[] stringBuilder = new StringBuilder[numRows];
for(int i = 0; i< numRows; i++){
stringBuilder[i] = new StringBuilder();
}
for (char ch:s.toCharArray()) {
stringBuilder[index].append(ch);
index = index+n;
if (index == 0 || index ==numRows-1) {
n = -n;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < numRows; i++) {
sb.append(stringBuilder[i]);
}
return sb.toString();
}