394. 字符串解码
题目链接:394. 字符串解码
代码如下:
class Solution
{
public:
string decodeString(string s)
{
stack<string> strs;
stack<int> nums;
int num=0;
string res;
for(int i=0;i<s.size();i++)
{
if(s[i]>=1&&s[i]<='9')//记录数字
{
num=num*10+s[i]-'0';//怕num是个大于10的数
}
else if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
{
res+=s[i];
}
else if(s[i]=='[')//遇到‘]’时,操作与之相配的‘[’之间的字符,使用分配律
{
nums.push(num);
num=0;
strs.push(res);
res="";
}
else//遇到‘]’时,操作与之相配的‘[’之间的字符,使用分配律
{
int times=nums.top(); nums.pop();
for(int j=0;j<times;j++)
{
strs.top()+=res;
}
res=strs.top(); strs.pop();
}
}
return res;
}
};