求zigzag模式下的字符串。
图上为该种模式的说明
1 1 1
1 1 1 1
1 1
首先我是对numRows=1和=2的情况单独处理的,因为这两种情况比较特殊,其他的情况看做是一种。
class Solution {
public:
string convert(string s, int numRows) {
string w[10000];
int cnt=0;
int mark=0;
string ans;
if(numRows==1)ans=s;
else if(numRows==2){
for(int ii=0;ii<s.size();ii++)
{
if(ii%2)w[1]+=s[ii];
else w[0]+=s[ii];
}
ans=w[0]+w[1];
}
else{
for(int ii=0;ii<s.size();ii++){
if(mark&&cnt==2){mark=0;cnt=0;}
if(mark){
w[--cnt]+=s[ii];
continue;
}
w[++cnt]+=s[ii];
if(cnt%numRows==0)mark=1;
}
for(int ii=1;ii<=numRows;ii++)ans+=w[ii];
}
return ans;
}
};