LC 速查

HOT 100索引 › B12 栈 Stack

LC 394字符串解码Decode String 中等

将形如 "3[a2[c]]" 的编码串解码为 "accaccacc",其中 k[...] 表示方括号内内容重复 k 次,嵌套可多层。

思路 双栈:遇 '[' 把倍数与当前串压栈并清零,遇 ']' 弹出并拼接 cur=prev+cur*k,普通字符累加。O(n)。

class Solution:
    def decodeString(self, s: str) -> str:
        num_st, str_st = [], []
        cur, num = "", 0
        for c in s:
            if c.isdigit():
                num = num * 10 + int(c)
            elif c == "[":
                num_st.append(num)
                str_st.append(cur)
                num, cur = 0, ""
            elif c == "]":
                cur = str_st.pop() + cur * num_st.pop()
            else:
                cur += c
        return cur
← 上一题 最小栈每日温度 下一题 →