LeetCode 6:《ZigZag Conversion》

编程思路:首先理解什么是ZigZag,所谓ZigZag就是N字型,生成ZigZag时,及时更新字符前进方向,详细介绍见下面的Python程序

class Solution:
    # @return a string
    def convert(self, s, nRows):
        # 只有一行时
        if nRows == 1:
            return s
        # 将行号和每行的字符串建立映射
        row_str = {}
        for i in range(nRows):
            row_str.setdefault(i, '')
        i, row = 0, 0
        # 设置一个标志,当前zigzag的方向,是向下还是向上,默认向下
        flag = True
        while i < len(s):
            row_str[row] = row_str[row] + s[i]
            if flag:
                row = row + 1
                # 当达到最下面的一行,调整方向
                if row == nRows:
                    row = row - 2
                    flag = False
            else:
                row = row - 1
                # 当达到最上面一行,调整方向
                if row == -1:
                    row = row + 2
                    flag = True
            i = i + 1
        result = ''
        for i in range(nRows):
            result = result + row_str[i]
        return result


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值