leetcode 6 ZigZag Conversion(水题)

就是简单的模拟一下就可以了。但是我一开始是用一个二维char数组来存的,这样在最终扫全体时会扫很多空的位置,浪费了很多时间,所以就time limit error了。

所以改进一下就用string数组来存。其实可以发现,这个表我们需要的每一行的相对位置,而对于每一列的相对位置根本就无所谓,可以横向随便“拉伸”这个表。

class Solution {
public:
    string convert(string s, int numRows) {
        const int n=numRows;
        if(n==1)return s;
        string str[n];
        int len=s.length();
        int row=0,k=1;
        for(int i=0;i<len;i++){
            str[row]+=s[i];
            row+=k;
            if(row>=n){
                k=-1;
                row-=2;
            }
            else if(row<0){
                k=1;
                row+=2;
            }
        }//end of for
        s.clear();
        for(int i=0;i<n;i++){
            s.append(str[i]);
        }
        return s;
    }
};

 

posted @ 2015-10-27 18:40  周洋  阅读(138)  评论(0编辑  收藏  举报