码迷,mamicode.com
首页 > 其他好文 > 详细

6. ZigZag Conversion - LeetCode

时间:2018-08-12 17:17:32      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:题目   string   alt   har   输出   leetcode   思路   youtube   builder   

Question

6. ZigZag Conversion

技术分享图片

Solution

题目大意:将字符串按Z字型排列,然后再一行一行按字符输出

思路:按题目中的第一个例子,画出如下图,通过n的不同值,可以找出规律红线的长度是2*n-2,蓝线的长度是interval - row,这样根据已知参数知道有n行,所以遍历n行,每行有多少列呢,每一列最后一列必须小于s.length,这样就可以通过遍历来求出最终结果了。

技术分享图片

Java实现:

public String convert(String s, int n) {
    if (n == 1 || n >= s.length()) return s;

    StringBuilder sb = new StringBuilder();
    int interval = 2 * n - 2;
    for (int row = 0; row < n; row++) {
        int step = interval - 2 * row;
        for (int col = row; col < s.length(); col += interval) {
            sb.append(s.charAt(col));
            if (step > 0 && step < interval && (col + step) < s.length()) {
                sb.append(s.charAt(col + step));
            }
        }
    }
    return sb.toString();
}

Ref

思路参考了这个视频:https://www.youtube.com/watch?v=7UQ71uwQFx4

6. ZigZag Conversion - LeetCode

标签:题目   string   alt   har   输出   leetcode   思路   youtube   builder   

原文地址:https://www.cnblogs.com/okokabcd/p/9463012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!