leetcode第6题—zigZag

来源:互联网 发布:vb command透明 编辑:程序博客网 时间:2024/05/16 14:03

LeetCode第六题zigZag的简单解法

这题目是一道简单的找规律的题目

0 10第1行两个数之间的间隔为 10,10,10

1 911 第2行两个数之间的间隔为8,2,8,2

2 812 第3行两个数之间的间隔为6,4,6,4

3 713 第4行两个数之间的间隔为4,6,4,6

4 614 第5行两个数之间的间隔为2,8,2,8

5 15第6行两个数之间的间隔为10


所以,规律就是,第一行和最后一行间隔都是2*(numRows-1)

其余各行的间隔依次为k=2*(numRows-1-i)  和k=2*(numRows-1)-k


string convert(string s, int numRows) {        if(s.empty())            return " ";        if(numRows==1)            return s;        string ret;        for(int i=0;i!=numRows;i++)        {            if(i==0||i==numRows-1)            {                int k=2*(numRows-1);                for(int j=i;j<s.size();j=j+k)                    ret.push_back(s[j]);                            }            else            {                int k=2*(numRows-1-i);                for(int j=i;j<s.size();j=j+k,k=2*(numRows-1)-k)                    ret.push_back(s[j]);            }               }        return ret;    }};


0 0