题目描述
问题很简单你只需要回答给定的字符串(只含有小括号)是否合法
如果合法输出"YES",否则输出"NO"(不含括号)
输入描述
多组输入测试
第一行输入一个整数n(1<=n<=10)
接下来n行每行都输入一个字符串(字符串长度不会超过100)
输出描述
输出n行代表每行的括号是否合法"YES"or"NO"
样例输入
5 ((((((())))))) ()()()()())(()(( ()(()((()()())())() ((())()()()())()) ()()()()()(())
样例输出
YES NO NO NO YES
分析 括号不匹配只有三种情况:
1.第一个括号为 ')';
2.第一个括号为 '(' 且当左右括号相等且可逐个配对完又出现 ')' ;
3.左右括号不相等。
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
while(n--){
char str[100];
scanf("%s",str);
int c=0;
int s[100];
int k=strlen(str);
for(int i=0;i<k;i++){
if(str[i]=='('){
c++;
s[c]=str[i];
}
else if(str[i]==')'&&s[c]=='('){
c--;
}
else{
c=2;
break;
}
}
if(c==0){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}