原题
解法(C++)
递归解法。(后来想到,用栈加队列更简明)
#include<iostream>
#include<string>
#include<stack>
#include<algorithm>
using namespace std;
pair<string,int> changestring(string s){
string temp;
for(int i=0;i<s.length();i++){
if(s.substr(i,1)!="(" && s.substr(i,1)!=")"){
temp += s.substr(i,1);
}
if(s.substr(i,1)=="("){
i++;
pair<string,int> pairs = changestring(s.substr(i,s.length()-i));
string ret = pairs.first;
int index = pairs.second;
temp = temp + ret;
i+=index-1;
continue;
}
if(s.substr(i,1)==")"){
reverse(temp.begin(), temp.end());
return {temp,++i};
}
}
return {temp,s.length()};
}
int main(){
string s;
cin >> s;
pair<string,int> pairs = changestring(s);
cout << pairs.first << endl;
return 0;
}