括号匹配

                             括号匹配

题目描述

 给你一串字符,不超过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\n");
        else printf("no\n");
    }
    return 0;
}
View Code

 

posted @ 2014-11-21 20:50  6bing  阅读(211)  评论(0编辑  收藏  举报