思路:重点是找interval和step的公式
public String convert(String s, int numRows) {
if (s == null) {
return "";
}
int len = s.length();
if (len <= numRows || len <= 1 || numRows == 1) {
return s;
}
char[] zigZagChars = new char[len];
int idx = 0;
int interval = 2 * numRows - 2;
for (int row = 0; row < numRows; row++) {
int step = interval - 2 * row;
for (int col = row; col < len; col += interval) {
zigZagChars[idx++] = s.charAt(col);
if (step > 0 && step < interval && col + step < len) {
zigZagChars[idx++] = s.charAt(col + step);
}
}
}
return new String(zigZagChars);
}