题目链接
https://leetcode.com/problems/zigzag-conversion/
解题思路
把ZigZag分两步,先往下走,再往右上方走,一直重复这两个步骤,过程中用二维数组记录每一行的字符,最后在拼接起来。
代码
class Solution {
public:
string convert(string s, int numRows) {
if (numRows <= 1) {
return s;
}
vector<vector<char>> v(numRows);
int i = 0;
while (i < s.length()) {
int k = 0;
//往下走
for (; k < numRows - 1 && i < s.length(); k++) {
v[k].push_back(s[i++]);
}
//往右上方走
for (; k > 0 && i < s.length(); k--) {
v[k].push_back(s[i++]);
}
}
string res(s);
int k = 0;
for (i = 0; i < numRows; ++i) {
for (auto ch : v[i]) {
res[k++] = ch;
}
}
return res;
}
};
网友评论