题目

解题思路
1、下面代码的第一个for循环把一个List分成多份空字符串,具体几份取决于numRows,然后每一份代表每一行的字符串
2、第二个for循环来判断每一个字符应该放在哪一行,拼接上去
3、第三个for循环遍历List把每一行字符串拼接起来就是结果
4、curRow += goingDown ? 1 : -1; 这种写法很骚
代码
class Solution {public String convert(String s, int numRows) {if (numRows == 1) return s;List<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();}}
