首页 > 代码库 > [Leetcode] 6 - ZigZag Conversion
[Leetcode] 6 - ZigZag Conversion
题目链接: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; } };
[Leetcode] 6 - ZigZag Conversion
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。