【LeetCode394】字符串解码(栈)

举报
野猪佩奇996 发表于 2022/01/23 00:16:31 2022/01/23
【摘要】 1.题目 2.思路 由内向外的解析规则很符合栈的特性,对于内部的数字和字符串就借助辅助栈暂时的push和pop。 当 c 为]时,stack 出栈,拼接字符串 res = last_res +...

1.题目

在这里插入图片描述
在这里插入图片描述

2.思路

由内向外的解析规则很符合栈的特性,对于内部的数字和字符串就借助辅助栈暂时的push和pop。

当 c 为]时,stack 出栈,拼接字符串 res = last_res + cur_multi * res,其中:
last_res是上个[到当前[的字符串,例如 “3[a2[c]]” 中的 a;
cur_multi是当前[]内字符串的重复倍数,例如 “3[a2[c]]” 中的 2。

注意:list赋值给元素时是依次赋值,而非只有第一个元素得到整个list,当然这题append进去栈的也可以不是list,逐个元素append进去也行,pop出来的赋值就要对应好。

3.python代码

class Solution(object):
    def decodeString(self, s):
        stack, ans, multi = [], "", 0
        for c in s:
            if '0' <= c <= '9':
                multi = multi * 10 + int(c)
            elif c == '[':
                stack.append([multi, ans])
                ans, multi = "", 0
            elif c == ']':
                TempMulti, LastAns = stack.pop()
                ans = LastAns + TempMulti * ans
            else:
                ans += c
        return ans  

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/117003676

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。