class Solution {
public:
string decodeString(string s) {
string res=""; //返回值
stack<string> str;
stack<int> nums;
int num=0;
for(int i=0;i<s.size();i++){
if(s[i]>='0' && s[i]<='9') //计算数字
num=num*10+(s[i]-'0');
else if((s[i]>='a' && s[i]<='z')||(s[i]>='A' && s[i]<='Z')) //计算子字符串
res+=s[i];
else if(s[i]=='['){ //遇到[入栈,将前面的数字与子字符串分别入栈,并清零
nums.push(num);
str.push(res);
num=0;
res="";
}
else if(s[i]==']'){ //遇到]出栈,将栈顶的数字和字符串加到返回值上
for(int j=0;j<nums.top();j++)
str.top()+=res;
res=str.top();
str.pop();
nums.pop();
}
}
return res;
}
};
394. 字符串解码
最新推荐文章于 2024-05-19 22:53:12 发布