Decode String
这个题很难写出简洁干净的代码... 暂时不研究discussion里面那些了,LC那三个测试case基本把所有边界情况都涵盖了
class Solution(object):
def decodeString(self, s):
"""
:type s: str
:rtype: str
"""
result = ''
curNum = 0
curString = ''
stack = []
n = len(s)
for i in xrange(n):
if s[i].isdigit():
if curString:
stack.append(curString)
curString = ''
curNum = 10 * curNum + ord(s[i]) - ord('0')
elif s[i] == '[':
stack.append(curNum)
curNum = 0
elif s[i].isalpha():
curString += s[i]
else:
while type(stack[-1]) != int:
curString = stack.pop() + curString
num = stack.pop()
stack.append(num * curString)
curString = ''
return ''.join(stack) + curString