#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main(){
string s;
stack <string> ans;
cin >> s;
int j = 0; //复制倍数
int n = 0; //复制字符串的长度
int z = 1; //几重压缩
int k = 0;
string s2;
for (int i = s.length()-1; i >= 0; --i){
if (s[i] != ']') {
ans.push(string(1,'s[i]'));
}
else if (s[i] == ']' && s[i - 1] != ']'){
for (k = i - 1; k >= 0; k--){
if (s[k] >= '0' && s[k] <= '9'){
if (s[k - 1] >= '0' && s[k - 1] <= '9'){
j = (s[k - 1] - '0') * 10 + (s[k] - '0');
k -= 1;
n = i - k - 2;
s2 = s.substr(k + 2, n);
i = k - z - 2 * z + 2;
break;
}
else{
j = s[k] - '0';
n = i - k - 1;
s2 = s.substr(k + 1, n);
i = k - z - z + 1;
break;
}
}
}
for (; z > 0; z--){
for (int m = j; m > 0; m--){
ans.push(s2);
}
}
z = 1;
}
else{
z++;
}
}
while (!ans.empty()){
cout << ans.top();
ans.pop();
}
cout << endl;
return 0;
}
为什么输入测试数据为"]]FUNFUNFUN"?