394.字符串解码

难度:中等
题目描述:
在这里插入图片描述
思路总结:这题因为括号的嵌套,很容易想到用递归或者栈,但是实际写起来是比较复杂的,不好想出,需要多加思考。关键在于,如何保存前面已经生成(栈中没有左括号)的字符串的信息。另外,最后有个小技巧,mul*10的使用,巧妙的按字符读取n位整数。
题解一:

class Solution:
    def decodeString(self, s: str) -> str:
        #思路:这种类型的题,一种思路是栈,一种思路是递归。
        #本解法用的是栈,当遇到[时,我们将数字压入栈中,并开始用cur_str记录中括号里的字母,如遇到],就将之前的数字出栈并与当前的cur_str相乘。
        mul, cur_str = 0, ''
        stack = []
        for c in s:
            if c == '[':
                stack.append((mul, cur_str))
                mul, cur_str = 0, ''
            elif c == ']':
                n, pre = stack.pop()
                cur_str = pre + n * cur_str
            elif '0' <= c <= '9':
                mul = 10 * mul + int(c)
            else: #字母
                cur_str += c
        return cur_str       

题解一结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值