N字形变换

N字形变换

1、题目

image-20231213102851790

2、题解

给定了输入字符串和要求行数,我们可以设定一个\(flag=1\),当到达转折点时对\(flag\)进行取反,实现\(N\)形存储。

1
2
3
4
5
6
7
8
9
10
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows < 2: return s
res = ["" for _ in range(numRows)]
i, flag = 0, -1
for c in s:
res[i] += c
if i == 0 or i == numRows - 1: flag = -flag
i += flag
return "".join(res)

复杂度分析:

  • 时间复杂度 O(N) :遍历一遍字符串 \(s\)
  • 空间复杂度 O(N) :各行字符串共占用 \(O(N)\) 额外空间。

N字形变换
http://example.com/2023/12/13/N字形变换/
作者
Z Z
发布于
2023年12月13日
许可协议