LeetCode每日一题——T6. Z 字形变换(中)——数组用法

本文深入探讨了将字符串以Z形方式排列并重新转换成一行的算法实现。通过定义一个包含目标行数的字符串数组,算法巧妙地利用行变化规律,实现了字符串的正确填充。当到达数组边界时,行变化方向会反转,确保了Z形布局的准确性。

从题目描述中可知,没有将 " "输出,因此可以将数组定义为含有 numRows 个字符串的数组,每个字符串为规则内的一行元素。因此在填入字符时,只需要考虑行变化,即将元素放入数组中哪个字符串后面。可以发现,行变化是递增或递减 1 的,当行变化到顶部或底部时,改变行变化方式。

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        if numRows < 2:
            return s
        res = ["" for x in range(numRows)]      # 创建numRows个元素的数组
        
        i, sign = 0, -1
        # 当 i 到达 0 或 numRows-1 时,即应该将下一个字符放入下一列时,改变 i 的变化方式
        # i改变方式是递增 1 ,或递减 1 
        for chr in s:
            res[i] += chr       # 在第i行元素后添加字符
            if i == 0 or i == numRows - 1:
                sign = - sign
            i += sign
            
        return "".join(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值