#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串
# @return string字符串
#
class Solution:
def decodeString(self , s: str) -> str:
# write code here
ans = []#注意入栈元素的判断条件
for c in s:
if not ans:#空栈时,元素直接入栈
ans.append(c)
elif c.isdigit():#当前元素为数字字符
if not ans[-1]:#栈底元素为空字符,当前字符加在栈底元素末尾
ans[-1] += c
elif ans[-1].isalpha():#栈底元素为数字,说明是括号内的字符,添加
ans.append(c)
elif c.isalpha():#当前元素是字母字符,直接加到栈底元素末尾
ans[-1] += c
elif c=='[':#当前元素是左中括号,占地添加一个空字符做占位+标记
ans.append('')
else:#]#当前元素是右中括号,则会有元素出栈相乘
strs = ans.pop()*int(ans.pop())#元素出栈相乘
if not ans or ans[-1].isdigit():#出栈后栈为空或栈底元素为数字
ans.append(strs)
else:#其他情况,出栈后栈底元素为字符,直接添加到栈底元素末尾
ans[-1] += strs
return ''.join(ans)#拼接后返回