解体思路:首先获取多行,行数由Z的实际高度来确定;然后从上至下遍历,到达行底反向遍历。是看别人的实现,希望有一天我能够这么娴熟。
public static String convert(String s ,int numRows){
if (numRows == 1){
return s;
}
ArrayList<StringBuilder> rows = new ArrayList<>();
for (int i=0;i<Math.min(numRows,s.length());i++){
rows.add(new StringBuilder());
}
int curRow = 0;
boolean goingDown = false;
//这个地方就开始从上至下,从下至上读取,每读一次添加一个,到行底就换方向。
for (char c : s.toCharArray()) {
rows.get(curRow).append(c);
if (curRow == 0 || curRow == numRows - 1){
goingDown = !goingDown;
}
curRow += goingDown?1:-1;
}
StringBuilder ret = new StringBuilder();
for (StringBuilder row : rows) {
ret.append(row);
}
return ret.toString();
}