Leetcod6. Z 字形变换(规律题)

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcod6. Z 字形变换(规律题)相关的知识,希望对你有一定的参考价值。

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

解题思路

这题是一道找规律的题。我们按行来访问,第一次把所有第一行的元素加入答案,直到最后把最后一行的元素加入答案。第一行和最后一行是一种规律,中间行又是一种规律。具体实现看代码。

代码

class Solution {
    public String convert(String s, int numRows) {
        StringBuilder ans = new StringBuilder();
        if(numRows == 1)    //特判
            return s;   
        for(int i = 0; i < numRows; i++){   //按行查找
            if(i == 0 || i == numRows - 1)    //如果是第一行或者是最后一行
                for(int j = i; j < s.length(); j += 2 * numRows - 2)    //公差为2*numRows-2
                    ans.append(s.charAt(j));
            else {
                for(int j = i, k = 2 * numRows - 2 - j; j < s.length() || k < s.length(); j += 2 * numRows - 2, k += 2 * numRows - 2) { //中间行有两种情况
                    if(j < s.length())
                        ans.append(s.charAt(j));
                    if(k < s.length())
                        ans.append(s.charAt(k));
                }
            }
        }
        return ans.toString();
    }
}

复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

以上是关于Leetcod6. Z 字形变换(规律题)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 6[找规律] Z字形变换 HERODING的LeetCode之路

力扣6. Z 字形变换

leetcode第6题:Z字形变换--直接模拟求解法

控制遍历方向模拟题--Z字形变换

Leecode06. Z 字形变换——Leecode大厂热题100道系列

Leecode06. Z 字形变换——Leecode大厂热题100道系列