2.1 Stack

Stack

利用栈暂且保存有效信息

翻转栈的运用

栈优化dfs,变成非递归

#time: O(n) space:O(n)
class Solution:
    def decodeString(self, s: str) -> str:
        if not s:
            return s
        
        num_stack = []
        str_stack = []
        res = ''
        num = 0
        for i in range(len(s)):
            if s[i].isdigit():
                num = num*10 + int(s[i])
            elif s[i] == '[':
                num_stack.append(num)
                num = 0
                str_stack.append(res)
                res = ''
            elif s[i] == ']':
                pre = str_stack.pop()
                res = pre + res*num_stack.pop()
            else:
                res += s[i]
        return res

316 Remove Duplicate Letters

Last updated