找到同一行相邻两个字符间距的规律即可,以numRows=5为例
1 9 ... (0,8)
2 8 10 (6,2)
3 7 11 (4,4)
4 6 12 (2,6)
5 13 (8,0)
string convert(string s, int numRows) {
int len=s.length();
if(len<=1 || numRows==1)return s;
int gap[2]={2*(numRows-1),0};
string res;
for(int i=0;i<numRows;i++){
int index=i;
int dir=0;
while(index<len){
res+=s[index];
index+=(gap[dir]==0?gap[1-dir]:gap[dir]);
dir=1-dir;
}
gap[0]-=2;
gap[1]+=2;
}
return res;
}