/* stack的用途:括号匹配问题string answer(s.size(),' ');//字符串的一种定义方式 //存放要输出的字符串只入栈(的序号遇到(就将其序号存入stack,遇到 )就检验能否匹配,如果能匹配 ( 出栈,若为空则改变answer对应)序号的字符为?最后将栈中剩下的全部( 在answer中根据对应序号改为 $*/#include<iostream>#include<stack>using namespace std;int main(){string s;cin>>s;string answer(s.size(),' ');//字符串的一种定义方式stack<int> pp;for(int i=0;i<s.size();i++){if(s[i]=='(')pp.push(i);else if(s[i]==')'){if(!pp.empty())pp.pop();else{answer[i]='?';}}}while(!pp.empty()){int x=pp.top();pp.pop();answer[x]='$';}cout<<s<<endl;cout<<answer;return 0;}