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之路