LeetCode 6. Z 字形变换

6. Z 字形变换

题目:
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

LeetCode 6. Z 字形变换_第1张图片
链接 https://leetcode.cn/problems/zigzag-conversion/

个人思路
  1. 观察示例可以发现,字符串s的每个字符将要摆放在的行的序列为0,1,2,3,2,1,0,1,2,3···,因此这就是一个0,1,2,3,2,1的循环,也就是0,1,2,···,numRows,numRows-1,···,1的循环。
  2. 我们先来构造这样一个循环:
a = [i for i in range(0,numRows)]
b = [j for j in range(numRows-2,0,-1)]
index = a + b
  1. 接下来计算s会在index中循环多少次:构造刚好能够容纳s长度的列表
# 计算列表长度
x = len(s) // len(index)
y = len(s) % len(index)
index = index * x + index[0:y]
  1. 接下来循环,把s中的每个字符放进以index元素为key的字典,最后返回即可
    总的代码如下:
class Solution:
    def convert(self, s: str, numRows: int) -> str:
        # 先排除一行的情况,否则后面构造列表会报错
        if numRows == 1:
            return s
        a = [i for i in range(0,numRows)]
        b = [j for j in range(numRows-2

你可能感兴趣的:(LeetCode,哈希表/备忘录算法,矩阵,leetcode,算法,职场和发展)