索引找规律的问题,非首尾两行的需要加一个mid元素,其他的步长都是2(n-1),需要例外的是nRows=1的情况。以前搞了一个非递归汉诺塔问题后,这种问题一般都比较有信心能做出来。
class Solution {
public:
string convert(string s, int nRows) {
if (nRows == 1) {
return s;
}
int length = s.size();
stringstream ss;
for (int i = 0; i < nRows; ++i) {
for (int index = i; index < length; index += (nRows - 1) * 2) {
ss << s[index];
if (i > 0 && i < nRows - 1) {
int mid = index + 2 * (nRows - i - 1);
if (mid < length) {
ss << s[mid];
}
}
}
}
return ss.str();
}
};