栈来验证括号的匹配。比如输入一行只包含“()[]{}”的字符串,请判断形如“([{}()])”或者“{()[]{}}”的是否可以正确匹配。显然上面两个例子都是可以正确匹配的。“([)]”是不能匹配的
#include<bits/stdc++.h>
using namespace std;
char a[1001],st[1001];
int main(){
scanf("%s",a);
int len=strlen(a);
int t=0;
for(int i=0; i<len; i++){
if(a[i]=='('||a[i]==')'||a[i]=='{'||a[i]=='}'||a[i]=='['||a[i]==']'){
if(a[i]==')'&&st[t-1]=='(')
t--;/*出栈操作*/
else if(a[i]=='}'&&st[t-1]=='{')
t--;
else if(a[i]==']'&&st[t-1]=='[')
t--;
else
st[t++]=a[i];/*入栈操作*/
}
}
if(t==0)
printf("YES\n");
else
printf("NO\n");
return 0;
}