()[ ] { }三种括号进行匹配。
左括号入栈,碰到右括号,就出栈一个元素,如果栈为空或者出栈的元素与该括号不匹配,则不合法,直接标记退出。
#include<iostream>
#include<string.h>
using namespace std;
int main() {
string str;
cin>>str;
char s[1000];
int top=0;
int flag=1;
for(int i=0; i<str.length(); i++) {
if(str[i]=='('||str[i]=='['||str[i]=='{') s[top++]=str[i];
else {
if(str[i]==')') {
if(s[--top]!='(') {
flag=0;
break;
}
} else if(str[i]=='}') {
if(s[--top]!='{') {
flag=0;
break;
}
} else {
if(s[--top]!='[') {
flag=0;
break;
}
}
}
}
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}