#include<bits/stdc++.h>
using namespace std;
int top;
string s;
char arr[100001];
int main(){
cin>>s;
if(s.length()%2!=0){
cout<<"NO";
return 0;
}
for(int i=0;i<s.length();i++){
if(top==0 && (s[i]==')' || s[i]==']')){
cout<<"NO";
return 0;
}
if(s[i]=='(' || s[i]=='['){
arr[++top]=s[i];
}
if(s[i]==')' || s[i]==']'){
if(arr[top]=='(' && s[i]==')'){
top--;
}
if(arr[top]=='[' && s[i]==']'){
top--;
}
}
}
if(top==0){
cout<<"YES";
}
else{
cout<<"NO";
}
return 0;
}
数据如下(未过样例):
in:((1*(1+2))((2/1)+(10+2a))+2+3*(2+a)(1+2)+3+2)+(21)-1+(0*0)+(a/3)@
out:YES