class Solution {
public:
string decodeString(string s) {
int u = 0;
return dfs(s,u);
}
// 将[]内的字符展开
string dfs(string &s, int &u){
string res;
while(u<s.size()&&s[u]!=']'){
if((s[u]>='a'&&s[u]<='z')||(s[u]>='A'&&s[u]<='Z')){
res+=s[u];
}else{
int k = 0;
while(s[u]>='0'&&s[u]<='9'){
k = k*10 + s[u++]-'0';
}
if(s[u]=='['){
string tmp = dfs(s,++u);
while(k--) res+=tmp;
}
}
++u;
}
return res;
}
};