HRBUST 1549 括号匹配

来源:互联网 发布:mac层的作用 编辑:程序博客网 时间:2024/06/05 05:40

给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。

模拟栈,每当遇到左括号,入栈,每当遇到有括号,看和栈顶的左括号是否匹配,如果匹配,栈顶出栈,如果不匹配,flag给个值标志着不匹配

最后判断flag==0&&t==0 没有不匹配且栈为空 yes 否则no

#include<stdio.h>#include<string.h>int main(){   int i,t,len,flag;    char str[105],come[103];    while(gets(str)!=NULL){          t=0;flag=0;        len=strlen(str);        for(i=0;i<len;i++){            if(str[i]=='{'||str[i]=='['||str[i]=='('){                come[t]=str[i];                t++;            }            if(str[i]==')'){               if(come[t-1]=='(')t--;               else flag++;            }            if(str[i]=='}'){              if(come[t-1]=='{')t--;              else flag++;            }            if(str[i]==']'){              if(come[t-1]=='[')t--;              else flag++;            }        }        if(t==0&&flag==0)          printf("yes\n");        else          printf("no\n");    }    return 0;}