力扣394-字符串破译

输入的字符串是:
3[a]2[bc]

class Solution:
    def decodeString(self, s: str) -> str:
        # 分析下要破译的字符出啊一共有几种形式的输入呢?数字,字母,左括号以及右括号。一共有四种输入
    # ===========参数解释======================
    # res:永远记录的是已经破译好的字符串
    # stack: 记录res以及即将要破译的字符串重复的次数
    # multi:即将破译的字符串要重复的次数
    # =======================================
    multi,res,stack = 0,'',[]
    for item in s:
        # print(item)
        if '0' < item <= '9':
            multi = multi*10 + int(item)
        elif item == '[':# 这里出错了。append进去之后,要更新一下res 以及multi的值
            stack.append([multi,res])
            res,multi = '',0
        elif item ==']':
            curr_multi,last_res = stack.pop()
            # last_res是已经译码解析完成的字符串。
            res = last_res + curr_multi*res  # 这里乘法的位置也出现了错误。

        else:
            res += item
        # 单步循环完之后,查看一下当时初始化的变量都有什么,以及它们的值是怎么变化的。
        print(f'item:{item}')
        print(f'res:{res}')
        print(f'stack:{stack}')
        print(f'multi:{multi}')
        print('======================')
    return res

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值