二维数组存储,然后倒叙遍历
class Solution {
public String convert(String s, int numRows) {
StringBuilder sb = new StringBuilder();
int len = s.length();
char[] chars = s.toCharArray();
int index = 0;
int lastRow = numRows - 1;
int lastClo = 1;
Character ans[][] = new Character[len][numRows];
for (int i = 0; i < len; i++) {
Arrays.fill(ans[i],'0'); //填充0
}
for (int i = 0; i <len; i++) {
if(i == 0 || lastRow == 0|| i % lastRow == 0){
for (int j = numRows - 1; j >= 0; j--) {//给二维数组赋值
if(index < len){
ans[i][j] = chars[index++]; // 给竖着的赋值
}
}
lastClo = 1;//当遍历到下一个竖线的时候,把斜线变为1
}else{
if(index < len){
ans[i][lastClo++] = chars[index++];//给斜线赋值
}else{
break;
}
}
}
for (int i = numRows - 1; i >= 0; i--) {//倒序打印
for (int j = 0; j <len; j++) {
if(ans[j][i] != '0'){
sb.append(ans[j][i]);
}
}
}
return sb.toString();
}
}