给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。
Input
输入数据有多组,处理到文件结束。
Output
如果匹配就输出“yes”,不匹配输出“no”
Example Input
sin(20+10) {[}]
Example Output
yes no
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 55 int main() { char a[N], s[N]; int i, len, top,flag; while(gets(a)) { len = strlen(a); top = 0; i = 0; flag = 0; for(i = 0; i < len; i++) { if(top < 0) { break; } if(a[i] == '{' || a[i] == '[' || a[i] == '(') s[top++] = a[i]; else if(a[i] == ']') { if(top == 0) flag = 1; if(s[top-1] == '[') top--; } else if(a[i] == '}') { if(top == 0) flag = 1; if(s[top-1] == '{') top--; } else if(a[i] == ')') { if(top == 0) flag = 1; if(s[top-1] == '(') top--; } } if(top == 0 && flag == 0) printf("yes\n"); else printf("no\n"); } return 0; }