【6】ZigZag Conversion

来源:互联网 发布:软件操作指南 编辑:程序博客网 时间:2024/06/05 19:18

找到同一行相邻两个字符间距的规律即可,以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;}

0 0
原创粉丝点击