题意:给定一个字符串,按照N字型的写法吧字符串重新排列,然后按从上到下,从左到右 输出新的字符串。(下面是例子)
"PAYPALISHIRING"
P A H N A P L S I I G Y I R答案:"PAHNAPLSIIGYIR"
思路:开一个动态数组,对于一个字符只要知道他现在要放在第几行就可以了。不需要知道具体坐标,因为最后空格位置是不输出的。 只需要开 nrow个 vector 记录 对应行加入的字符,再从上往下输出即可。
代码如下:
class Solution {
public:
string convert(string s, int numRows) {
vector<char>e[numRows];
int now=0,flag=1;
if(numRows==1)return s;
for(int i=0;i<s.length();++i){
e[now].push_back(s[i]);
if(now==0){
now++;
flag=1;
continue;
}
if(now==numRows-1){
now--;
flag=0;
continue;
}
if(flag==1)
now++;
else
now--;
}
string ans="";
for(int i=0;i<numRows;++i){
for(int j=0;j<e[i].size();++j)
ans+=e[i][j];
}
return ans;
}
};