Qiuziyi @ 2024-01-18 15:32:51
#include<bits/stdc++.h>
using namespace std;
string S;
int len;
char ans[110];
stack<char> s;
stack<int> x;
int main(){
cin>>S;
len=S.length();
for(int i=0;i<len;i++){
if(S[i]=='(' || S[i]=='['){
s.push(S[i]),x.push(i);
if(S[i]=='(') ans[i]=')';
else ans[i]=']';
}
else{
char tmp;
if(S[i]==')') tmp='(';
else tmp='[';
if(s.top()==tmp){
ans[x.top()]=' ',ans[i]=' ';
s.pop(),x.pop();
}else ans[i]=tmp;
}
}
for(int i=0;i<len;i++){
if(ans[i]==' ') cout<<S[i];
else if(ans[i]=='(' || ans[i]=='[') cout<<ans[i]<<S[i];
else cout<<S[i]<<ans[i];
}
return 0;
}
是类似题解第一篇的做法 TAT
by cjh666 @ 2024-02-07 17:33:33
@Qiuziyi 同52分RE,出现的问题是当栈空的时候调用了top()。在读入右括号的时候应该先判断栈是否为空,否则在比较栈顶元素的时候会RE
不知道现在回复能不能帮到你:P
by zuijiubugui @ 2024-02-27 14:39:55
@cjh666 感谢 vector也是同样的问题