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