2021-09-13

思路

两个栈,一个字母栈,一个数字栈
左括号开始就进入字母栈,右括号就开始出栈(出栈生成的结果要重新入字母栈),括号也要进栈,标志边界
# a:3 2 -> a:3 -> a:
# b:[ a [ c ] -> b:[ a c c ] -> b:a c c a c c a c c
# res: a c c a c c a c c
# a:3 -> a:2 -> a:
# b:[ a ] -> b:a a a [ b c ] -> b:a a a b c b c
# res:

代码
class Solution:
    def decodeString(self, s: str) -> str:
        '''
        case: "100[leetcode]"
        '''
        stack_num = []
        stack_alpha = []
        flag = False 
        for i in range(len(s)):
            cur = s[i]
            if cur.isdigit():
                if flag is False:
                    stack_num.append(int(cur))
                else:
                    pre = int(stack_num.pop())
                    num = pre * 10 + int(cur) 
                    stack_num.append(num)
                flag = True
            elif cur == ']':
                flag = False
                word = ''
                while len(stack_alpha) > 0:
                    tmp = stack_alpha.pop()
                    if tmp == '[':
                        break
                    word += tmp
                # 逆序退出栈
                count = int(stack_num.pop())
                while count > 0:
                    # for ele in word:
                    for j in range(len(word) - 1, -1, -1):
                        stack_alpha.append(word[j])
                    count -= 1 
            else:
                flag = False
                stack_alpha.append(cur)
        if len(stack_num) != 0:
            return ''    
        return ''.join(stack_alpha)
复杂度

时间复杂度:o(n)
空间复杂度:o(n)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大部分内容来自于《大话数据结构》,代码全部使用Swift实现。至于为什么抽风写这个?😊你懂的。 1.线性表 线性表...
    一剑孤城阅读 81,951评论 12 111
  • 二十一世纪旧体诗词风骚榜[https://www.jianshu.com/c/da968ae2d498] 上榜絮语...
    张成昱阅读 1,014评论 2 20
  • ● 如何打印二叉树每层的节点? 考察点:二叉树 参考回答: 实现代码: import java.util.Arra...
    le_u阅读 516评论 0 0
  • 01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例计算机(Compute...
    冰川_阅读 290评论 0 1
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 2,383评论 0 3