请大佬们帮我看看我代码哪错了

P1241 括号序列

gyy20081201 @ 2021-01-24 11:22:35

#include<bits/stdc++.h>
using namespace std;
string s,stk;
int tp,ans=1,k=0,vis[105];
int main(){
    cin>>s;
    int len=s.size();
    memset(vis,0,sizeof(vis));
    for(int i=0;i<len;i++){
        if(s[i+k]=='('||s[i+k]=='['){
            stk[++tp]=s[i+k];
        }
        else{
            if(tp>0){
                switch(s[i+k]){
                    case ')' :
                        if(stk[tp]=='('){tp--;vis[i+k-1]=1;}
                        else {
                            s.insert(i-1+k,1,'(');
                            k++;
                        }
                        break;
                    case ']' :
                        if(stk[tp]=='['){tp--;vis[i+k-1]=1;}
                        else {
                            s.insert(i-1+k,1,'[');
                            k++;
                        }
                        break;
                }
            } 
        }
    }
    for(int i=0;i<len+k;i++){
        if(!vis[k]&&(s[i]=='('||s[i]=='[')){
            if(s[i]=='('){s.insert(i+1,1,')');k++;}
            else if(s[i]=='['){s.insert(i+1,1,']');k++;}
        }
    }
    cout<<s<<endl;
}

|