问题:一串字符串中只含有一种类型的括号(如()、[]、{}中的一种),判断其中的括号是否能匹配
思路:
括号不能匹配的情况:
- 左右括号总数不等。
- 从左往右计数,某一时刻右括号个数大于左括号个数。
因此对做有括号进行计数
C代码实现:
#include <stdio.h>
int main(void){
char a[100];
int left=0,right=0,flag=1;
gets(a);
for(i=0;a[i]!='\0';i++){
if(a[i]=='('){
left++;
}
else{
right++;
}
if(right>left){
flag=0;
break;
}
}
if(left!=right){
flag=0;
}
if(flag==0){
printf("No\n");
}
else{
printf("Yes\n");
}
return 0;
}