#include<stdio.h>
#include<string.h>
int main()
{
char x[510000],s[510000];
int top=-1;
gets(x);
int len=strlen(x);
if(len%2!=0)
{
printf("NO");
return 0;
}
int flag=0;
for(int i=0;x[i]!='\0';i++)
{
if(x[i]=='('||x[i]=='['||x[i]=='{')
{
s[++top]=x[i];
}
else if(x[i]==')'&&s[top]=='(')
top--;
else if(x[i]==']'&&s[top]=='[')
top--;
else if(x[i]=='}'&&s[top]=='{')
top--;
else
{
flag=1;
break;
}
}
if(flag==0&&top==-1)
printf("YES");
else printf("NO");
return 0;
}
给定一个由括号组成的字符串
问其是否为一个合法的括号序列
合法的括号序列的定义如下
1. 空字符串是合法的括号序列
2. 若字符串A是合法的括号序列, 那么{A},[A],(A)也是合法的括号序列
3. 若字符串A,B是合法的括号序列, AB也是合法的括号序列
例如 {} ,[] , ({}()[]) 是合法的括号序列, ({)}则不是
输入格式:
一行, 一个仅含括号(){}[]的字符串
输出格式:
一行, "YES"表示字符串是合法的括号序列, 否则输出"NO"