括号匹配
题目描述
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。
输入
输入数据有多组,处理到文件结束。
输出
如果匹配就输出“yes”,不匹配输出“no”
示例输入
sin(20+10) {[}]
示例输出
yes no

#include<stdio.h> #include<string.h> int main() { char s[100000], q[10000]; int i, j, k, flag; while(gets(s)!=NULL) { flag = 0; j = 1; memset(q, 0, sizeof(q)); for(i=0; i<strlen(s); i++) { if(s[i]=='(' || s[i]=='{' || s[i]=='[') q[j++] = s[i]; else if(s[i]==')') { if(q[j-1]==0){ flag=1; break;} if(q[j-1]=='(') { q[j-1] = 0; j--; } else { flag =1; break; } } else if(s[i]=='}') { if(q[j-1]==0) {flag =1; break;} if(q[j-1]=='{') { q[j-1] = 0; j--; } else { flag =1; break; } } else if(s[i]==']') { if(q[j-1]==0) {flag =1; break;} if(q[j-1]=='[') { q[j-1] = 0; j--; } else { flag =1; break; } } if(flag==1) break; } if(flag==0 && q[1]==0) printf("yes "); else printf("no "); } return 0; }