ordoki @ 2023-08-02 00:00:31
#include<bits/stdc++.h>
#define null NULL
using namespace std;
struct node{
char data;
int pos;
}Stack[105],S[105];
char s[105];
int top,sl,failer[105],cnt;
int main(){
scanf("%s",s);
sl=strlen(s);
for(int i=0;i<sl;i++)
S[i].data=s[i];
for(int i=0;i<sl;i++){
if((s[i]=='(')||(s[i]=='[')){
Stack[++top].data=s[i];
Stack[top].pos=i;
}
else{
if(s[i]==')'){
if(Stack[top].data=='(')
top--;
else
failer[++cnt]=i;
}
if(s[i]==']'){
if(Stack[top].data==']')
top--;
else
failer[++cnt]=i;
}
}
}
for(int i=1;i<=top;i++)
S[Stack[i].pos].pos=1;
for(int i=1;i<=cnt;i++)
S[failer[i]].pos=1;
for(int i=0;i<sl;i++){
if(S[i].pos)
switch(S[i].data){
case'(':
case')':
printf("()");
break;
case'[':
case']':
printf("[]");
break;
default:
printf("%c",S[i].data);
}
else
printf("%c",S[i].data);
}
return 0;
}
评测记录
by Root808 @ 2023-08-04 19:04:27
28行那里,应该是
if(Stack[top].data=='[')