394. Decode String (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution:
def decodeString(self, s: str) -> str:
stack = []
cur = ""
for c in s:
if c == "[":
stack.append(cur)
cur = ""
elif c == "]":
if cur:
if stack[-1].isalpha():
stack[-1] += cur
else:
stack.append(cur)
cur = ""
word = stack.pop()
num = stack.pop()
if stack and stack[-1].isalpha():
stack[-1] += word * int(num)
else:
stack.append(word * int(num))
else:
if cur and cur.isalpha() and c.isdigit():
if stack and stack[-1].isalpha():
stack[-1] += cur
else:
stack.append(cur)
cur = c
else:
cur += c
return "".join(stack) + cur