彗星七号 @ 2023-11-03 13:46:10
#include<bits/stdc++.h>
using namespace std;
stack<int>stk;
void solve(){
string s,pei;
cin>>s;
int len=s.size();
for(int i=0;i<len;i++){
// cout<<s[i]<<endl;
if(s[i]=='('){
stk.push(i);
pei[i]=')';
}
if(s[i]=='['){
stk.push(i);
pei[i]=']';
}
if(s[i]==')'||s[i]==']'){
if(stk.empty()||pei[stk.top()]!=s[i]){
if(s[i]==')')
pei[i]='(';
else
pei[i]='[';
}
else pei[stk.top()]='1',stk.pop();
}
}
for(int i=0;i<len;i++){
if(pei[i]=='('||pei[i]=='[')
cout<<pei[i];
cout<<s[i];
if(pei[i]==')'||pei[i]==']')
cout<<pei[i];
}
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
solve();
return 0;
}
by 彗星七号 @ 2023-11-03 13:49:26
是哪里爆栈了吗?
by fcy20180201 @ 2023-11-03 14:20:18
@彗星七号 有没有一种可能,pei
字符串是空的,不能直接访问后面的元素。
by fcy20180201 @ 2023-11-03 14:23:19
可以每次循环开头写 pei.push_back('1');