【LeetCode 6】Z 字形变换

题目链接

【题解】


还想着模拟这个过程。然后发现只有行有用啊!...
那就建个rows大小的字符串数组存每行从左到右的字符就行啦。。
然后就是i从1变到n然后又变回1反复就好了。
最后把1..rows按顺序首尾连接在一起就行

【代码】

class Solution {
public:
    string convert(string s, int numRows) {
        if (numRows==1) return s;
        string dic[5000];
        for (int i = 1;i <= numRows;i++) dic[i]="";
        dic[1] = dic[1]+s[0];
        int len = s.size();
        int row = 1;
        int flag = 1;
        for (int i = 1;i<=len-1;i++){
            row+=flag;
            if (row>numRows){ row = numRows-1;flag = -1;}
            if (row<=0) {row = 2;flag = 1;}
            dic[row]=dic[row]+s[i];
        }
        string temp = "";
        for (int i = 1;i <= numRows;i++){
            temp = temp + dic[i];
        }
        return temp;
    }
};

猜你喜欢

转载自www.cnblogs.com/AWCXV/p/11789826.html