0394. Decode String
Medium | String + Stack | 20 ms (99.12%), 14.2 MB (81.02%)
Input: s = "3[a]2[bc]"
Output: "aaabcbc"
Input: s = "3[a2[c]]"
Output: "accaccacc"
Input: s = "2[abc]3[cd]ef"
Output: "abcabccdcdcdef"
Input: s = "abc3[cd]xyz"
Output: "abccdcdcdxyz"class Solution:
def decodeString(self, s: str) -> str:
# ==================================================
# String + Stack =
# ==================================================
# time : O(n)
# space : O(m), m is the number of pairs of square brackets
ans, stack, curNum = '', [], 0
for char in s:
if char.isdigit():
curNum = curNum * 10 + int(char)
elif char == '[':
stack.append((ans, curNum))
ans, curNum = '', 0
elif char == ']':
prev, num = stack.pop()
ans = prev + num * ans
else:
ans += char
return ansLast updated