思路:
- res用来记录每一次遇到
[
前的找到的字符串总共是什么 - stack里储存的是
[ 当前找到的重复变数,这个重复变数之前的字符串 ]
- 在遇到
]
后,从stack中弹出一组,对应的是:当前这个[]
里需要重复的变数,和之前的字符串,并进行拼接 - 最后返回字符串res
细节:
- 因为无法确认重复变数是否大于10,所以只要找到数字,就要
num=num*10+int(i)
来确保这一点。
class Solution:
def decodeString(self, s: str) -> str:
stack,res,num=[],"",0
for i in s:
if '0'<=i and i<='9':
num=num*10+int(i)
elif i=='[':
stack.append([num,res])
num,res=0,''
elif i==']':
cur_num,last_res=stack.pop()
res=last_res+cur_num*res
else:
res=res+i
return res