首页 > 其他 > 详细

6. ZigZag Conversion - LeetCode

时间:2018-08-12 16:38:45      阅读:180      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!