题目描述:
题解:
思路比较简单,直接看代码。
string convert(string s, int numRows) {
if (numRows == 1)return s;
vector<string> rows(min(numRows, int(s.length())));
int numRow = 0;
bool goingDown = false;
for (char c : s) {
rows[numRow] += c;
if (numRow == 0 || numRow == numRows - 1)goingDown = !goingDown;
numRow += goingDown ? 1 : -1;
}
string rst;
for (string row : rows)rst += row;
return rst;
}
string convertStrOnly(string s, int numRows) {
if (numRows == 1)return s;
int rows_n = min(numRows, int(s.length()));
string* rows = new string[rows_n];
int numRow = 0;
bool goingDown = false;
for (int i = 0; i < s.size(); i++) {
rows[numRow] += s[i];
if (numRow == 0 || numRow == numRows - 1)goingDown = !goingDown;
numRow += goingDown ? 1 : -1;
}
string rst;
for (int i = 0; i < rows_n; i++)rst += rows[i];
return rst;
}