其實是先把數字摳出來,然後再把括號內的一串給摳出來,用函數處理遞歸。
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;
}
};