#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @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)#拼接后返回