Z 字形变换 python实现

35 篇文章 0 订阅
18 篇文章 0 订阅
解题思路:
我们可以 1.设置一个列表:列数为 numRows 和字符串长度的最小值
        2.我们可以发现一个规律:就是row=0 和row=numRows -1 时都会改变方向 -1或者+1 操作
        3.设置一个改变方向的变量flag  当row=0 和row=numRows -1  是就改变flag 



#设置标志位,碰到第0或者第numsRows-1行,就要改变flag,
# 使row变化的方向发生改变,如果flag为True,就使row+=1,反之让row-=1
# LEETCODEISHIRING
class Solution:
    def convert(self, s: str, numRows: int) -> str:
        if numRows == 1: return s  # 单独讨论
        # *表示重复列
        res = [''] * min(len(s), numRows)
        print(res)
        row = 0
        flag = False
        for x in s:
            res[row] += x
            if row == 0 or row == numRows - 1:
                # 改变标志位
                flag = not flag
            if flag:
                row += 1
            else:
                row -= 1
        print (res)
        return ''.join(res)


if __name__ == '__main__':
    a = Solution()
    palindrome_bool = a.convert("ABCDEFGHIJKLMN",3)
    print(palindrome_bool)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值