其实是先把数字抠出来,然后再把括号内的一串给抠出来,用函数处理递归。
class Solution {
public:
string decodeString(string s) {
if(s.size() == 0) return "";
string ans = "";
for(int i = 0;i<s.size();i++)
{
if(isalpha(s[i])) ans.push_back(s[i]);
//处理数字
if(isdigit(s[i]))
{
int num = 0;
while(isdigit(s[i]))
{
num = num*10 + s[i]-'0';
i++;
}
//处理中间
i++;
string t = "";
int left = 1;
while(1)
{
if(s[i] == ']')
{
if(left == 1) break;
left --;
}
else if(s[i] == '[') left++;
t.push_back(s[i]);
i++;
}
//递归
t = decodeString(t);
for(int j = 0;j<num;j++)
{
ans = ans + t;
}
}
}
return ans;
}
};