解题思路:这个题目主要是找规律。最后一行和第一行两个元素下标之间相差numRows * 2 - 2,中间的行按照元素两两配对,这两个元素下标之间的距离为step - i * 2。
public class Solution {
public String convert(String s, int numRows) {
if (numRows == 1) return s;
int step = numRows * 2 - 2, len = s.length();
String ret = "";
// first row
for (int i = 0; i < len; i += step)
ret += s.charAt(i);
for (int i = 1; i < numRows - 1; i++) {
for (int j = i; j < len; j += step) {
ret += s.charAt(j);
if (j + (step - i * 2) < len)
ret += s.charAt(j + (step - i * 2));
}
}
// last row
for (int i = numRows - 1; i < len; i += step)
ret += s.charAt(i);
return ret;
}
}