[Leetcode] 6 - ZigZag Conversion

来源:互联网 发布:aws ubuntu root密码 编辑:程序博客网 时间:2024/04/29 20:45

题目链接:https://oj.leetcode.com/problems/zigzag-conversion/


找规律的一道题,row往前进2步的话,如果投影在zigzag的路径上,则是走了一个V字形,也就是说每一行的相邻2步,都是走了同样的投影距离。然后主要抓到步数计算的规律即可。

*注意step为0的情况,这时候要pick up最大的步长继续走。

*注意row为1行的情况,最早判断,避免死循环,因为步长是0。

*一直尝试po讲解照片,但是无论如何都显示不出来。有空搞定了传张照片帮大家理解,现在就借助code理解吧。

class Solution {public:    string convert(string s, int nRows) {        if (nRows <= 0) return "";        if (nRows == 1 || nRows > s.size()) return s;                int zigCount = 2 * nRows - 2;                string res = "";        int idx = 0;        while (idx < nRows) {            int curIdx = idx;            int step;            bool flag = true;            while (curIdx < s.size()) {                step = (flag ? zigCount - idx * 2 : idx * 2);                if (step == 0) step = max(zigCount - idx * 2, idx * 2);                                flag = !flag;                res += s[curIdx];                curIdx += step;            }             ++idx;        }                return res;    }};


0 0
原创粉丝点击