leetcode_6_Z字形变换

Z字形变换

描述

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

比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:

L   C   I   R
E T O E S I I G
E   D   H   N

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。

示例

输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"

输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"
 解释:

L     D     R
E   O E   I I
E C   I H   N
T     S     G

解题

设立numRows个数组来储存不同的字母,并用flag控制存储的方向
在这里插入图片描述
在这里插入图片描述
图片来自leetcode

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        if numRows < 2:
            return s
        res = ['' for _ in range(numRows)]
        i = 0
        flag = -1
        for c in s:
            res[i] += c
            if i == 0 or i == numRows-1:
                flag = -flag
            i += flag

        return ''.join(res)
发布了23 篇原创文章 · 获赞 0 · 访问量 235

猜你喜欢

转载自blog.csdn.net/qq_37876050/article/details/104275538