40分re求助

P1241 括号序列

彗星七号 @ 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');


|