class Solution {
public:
string decodeString(string s) {
string mys;
for(int i=0;i<s.size();)
{
if(!isdigit(s[i]))mys+=s[i++];//如果不是数字就加入结果,题目说了一定是数字加括号形式不会直接出现括号这种情况,
else
{
int k=0;
while(isdigit(s[i])) k=k*10+s[i++]-'0';//记录数值大小
int j=i+1,sum=1;
while(sum>0)
{
if(s[j]=='[')sum++;
if(s[j]==']')sum--;
j++;//找到匹配的括号
}
string temp=decodeString(s.substr(i+1,j-i-2));//回溯,前面有优先判字符情况,所以返回的是字符
while(k--)mys+=temp;//把结果加起来;
i=j;//继续前进
}
}
return mys;
}
};
leetcode 394. 字符串解码
最新推荐文章于 2022-03-18 16:18:05 发布