LeetCode 6.Z字形变换

题目

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

示例

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

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

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

解析

通过从左向右迭代字符串,我们可以轻松地确定字符位于 Z 字形图案中的哪一行。
所以只要循环字符串, 把字符添加到对应的行号就行

我的代码

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        if numRows == 1:
            return s;

        rows = []
        for i in range(min(numRows, len(s))):
            rows.append("")
        c_row = 0 # 记录当前要记录字符得到行数
        go_down = False # 记录行之间移动的方向
        for c in s:
            rows[c_row]+=c
            if(c_row == 0 or c_row == numRows - 1):
                go_down = not go_down
            curRow += 1 if go_down else - 1

        return "".join(rows)
展开阅读全文
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值