思路:
vector<string>v(numRows);
创建numRow个string,然后依次从string s中取出字符,判断字符属于哪一行(当前行 curRow 为 0 或 numRow-1 时,箭头发生反向转折),就在那行对应的string后面增加该字符即可。
代码如下(别忘了考虑特殊情况):
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class Solution {
public:
string convert(string s, int numRows) {
if (s.size() < numRows)
return s;
if (numRows == 1)
return s;
vector<string> v(numRows);
int curRow = 0;
bool goingDown = false;//ture表示向下,false表示向上
for (char temp : s) {//C++11新标准,表示依次取出string s中的元素给temp
v[curRow] += temp;//把字符加到对应行的string上去
if (curRow == 0 || curRow == numRows - 1) {// 当前行curRow为0或numRows -1时,箭头发生反向转折
goingDown = !goingDown;
}
curRow += goingDown ? 1 : -1;
}
string res;
for (string temp : v) {
res += temp;
}
return res;
}
};
int main() {
string s = "LEET";
Solution solution;
cout <<solution.convert(s,5) << endl;
system("pause");
return 0;
}