题目连接:Leetcode 006 ZigZag Conversion
解题思路:假设一个周期需要n个数,那么第一行两个数的下标关系为0,n;第二行为1,n-1;以此类推。需要注意的是第一行和最后一行,一个周期里面只有一个数。
class Solution {
public:
string convert(string s, int numRows) {
if (numRows == 1) return s;
string ret = "";
int gap = 2 * numRows - 2, len = s.length();
for (int i = 0; i < numRows; i++) {
int p = gap - 2 * i;
for (int j = i; j < len; j += gap) {
ret += s[j];
if (p + j < len && i && i != numRows-1) ret += s[j+p];
}
}
return ret;
}
};