LeetCode-python 394.字符串解码

题目链接
难度:中等       类型: 栈


给定一个经过编码的字符串,返回它解码后的字符串。

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。

你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。

此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。

示例

s = "3[a]2[bc]", 返回 "aaabcbc".
s = "3[a2[c]]", 返回 "accaccacc".
s = "2[abc]3[cd]ef", 返回 "abcabccdcdcdef".

解题思路


用[s, k]的list存储括号内部的数字及重复的次数,以该结构存入stack,已解决括号嵌套的问题
每次遇到数字的时候,开始记录数字,遇到’['的时候结束记录数字,将['',int(num)]存入stack
每次遇到‘]'再解码,解码的结果存储在上一层括号的s处
stack初始化为[['',1]],相当于在整体的外面加一层括号
最后返回stack[0][0]*stack[0][1]

代码实现

class Solution:
    def decodeString(self, s: str) -> str:
        stack = [['', 1]]
        num = ''
        for c in s:
            if c.isdigit():
                num += c
            elif c == '[':
                stack.append(['', int(num)])
                num = ''
            elif c == ']':
                subs, k = stack.pop()
                stack[-1][0] += subs*k
            else:
                stack[-1][0] += c
        return stack[0][0]*stack[0][1]

本文链接:https://www.jianshu.com/p/dcb883e3c0f2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,693评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,310评论 0 10
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,658评论 0 4
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,235评论 0 38
  • 中国的孩子与父母的关系是一个很难绕开的话题。曾经以为我与父母关系很好,回想小时候父母也没有对我做太过的事情,我...
    偶尔风格阅读 643评论 8 7

友情链接更多精彩内容