字符串处理。首先要知道题意,如图:
思路:
可以设立numRows(行数)个vector,然后按给出的字符串顺序遍历,模拟整个过程,走到哪一行就将该字符的下标插入vector中,最后按行输出即可。
class Solution {
public:string convert(string s, int numRows) {
vector<int> num[100000]; //num[i]数组按顺序存储第i行的下标
int k=1; //k表示行数,从1 到 numRows
bool flag=1; //flag==1 就行数++;否则就行数--
for(int i=0;i<s.size();i++){
num[k].push_back(i);
if(k==numRows){ //行数--
flag=0;
}
else if(k==1){ //行数++
flag=1;
}
//首先处理当numRows==1时的特殊情况
if(1==numRows){
k=1;
}
else if(flag){
k++;
}
else{
k--;
}
}
string result;
//从第一行到第numRows行按行输出
for(int i=1;i<=numRows;i++){
for(int j=0;j<num[i].size();j++){
result.push_back(s[num[i][j]]);
}
}
return result;
}
};