leetcode - 394. 字符串解码
题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3c1e55d5f25909bffc2a16943e8de693.png)
代码
#include <iostream>
#include <vector>
#include <stack>
#include <cmath>
using namespace std;
string decodeString(string s) {
int n = s.size();
string res = "", str = "";
stack<char> st;
for(int i = 0; i < n; i++){
if(s[i] != ']'){
st.push(s[i]);
}else{
while(st.top() != '['){
str += st.top();
st.pop();
}
st.pop();
int num = 0, m = 0;
while(!st.empty() && '0' <= st.top() && st.top() <= '9'){
int po = pow(10, m);
num = (st.top() - '0') * po + num;
m++;
st.pop();
}
for(int j = 0; j < num; j++){
for(int k = str.size() - 1; k >= 0; k--){
st.push(str[k]);
}
}
str = "";
}
}
while(!st.empty()){
res = st.top() + res;
st.pop();
}
return res;
}
int main(){
string s, res;
cin>>s;
res = decodeString(s);
cout<<res;
return 0;
}