6. Z 字形变换

这道题的解答很有意思,利用了一个flag标志
怎么说
就是来来回回的遍历
我们可以不设置k++,k–
这样,就是可以设置flag=1
然后到了临界的时候,再设置flag=-flag
这样就不用写大量的if else了非常的方便
看代码

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        if len(s)==0:
            return ""
        if numRows==1:
            return s 
        l=[]
        for i in range(numRows):
            l.append([])
        flag=1
        l[0].append(s[0])
        k=1
        for c in s[1:]:
            l[k].append(c)
            if k==numRows-1 or k==0:
                flag=-flag
            k+=flag
        s=""
        for item in l:
            s+="".join(item)
        return s

上面是我的代码,我的比较死板,认为flag必须是从1开始,但是第一个元素是0,就立马反转,所以使得索引变成-1,要解决这个问题,只好,把0放在最外面处理

作者采用了不一样的思路
他认为flag初始值是-1,这样遇到0,反转成1,巧妙的解决了这个问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值