【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;
    }
};
posted @ 2019-11-03 23:12  AWCXV  阅读(127)  评论(0编辑  收藏  举报