首先定义一个数组,还有一个行数和方向变量。当方向向下时,行数加一,当方向向上时,行数减一,当遇到首行或最后一行时改变方向。最后再把数组中元素拼接起来。
class Solution {
public:
string convert(string s, int numRows) {
if (numRows == 1) return s;
vector<string> rows(numRows, "");
bool down = false;//初始向上
for (int i = 0, row = 0; i < s.length(); i++) {
rows[row] += s[i];
if (row == 0 || row == numRows - 1) down = !down;
row += down ? 1 : -1;
}
string ans = "";
for (int i = 0; i < numRows; i++) ans += rows[i];
return ans;
}
};