《数据结构与算法》——括号匹配问题

Description

 输入一串字符串,编写算法判断字符串中的括号是否匹配,如果匹配,输出1,否则输出0。

注: 只考虑半角括号:( ) { } [ ],不考虑全角括号:( ) 【 】

例如:{ab123[(3*6-(4+3)) {223}[999]hhh}

字符串中的括号匹配。

{323[ab]()(123}

字符串中的括号不匹配。

提示:利用栈实现。

Input

 输入可以包含各种括号、数字、字母等符号的字符串。

Output

 括号匹配输出1,否则输出0。

Sample Input

sample 1:
{ab123[(3*6-(4+3)){223}[999]hhh}

sample 2:
{323[ab]()123}

Sample Output

sample1:
0
sample2:
1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FALSE 0
#define TRUE 1
int  match(char a,char b)
 {
    if(a=='('&&b==')')
        return TRUE;
    if(a=='['&&b==']')
        return TRUE;
    if(a=='{'&&b=='}')
        return TRUE;
    return FALSE;
}
int Bice(char* s)
{
    int i,n=strlen(s),top=-1;
    char st[n];
    for(i=0;i<n;i++)
	{
        if(s[i]==')'||s[i]==']'||s[i]=='}')
		{
            if(top>=0&&match(st[top],s[i]))
                top--;
            else
                return FALSE;
        }
        else if(s[i]=='('||s[i]=='['||s[i]=='{')
            st[++top]=s[i];
    }
    if(top==-1)
        return TRUE;
    return FALSE;
}
int main(){
   char array[100];
    gets(array);
    int i;
    i=Bice(array);
    if(i==1){
        printf("1");
    }
    else{
         printf("0");
    }
    return 0;
}

 

    原文作者:括号匹配问题
    原文地址: https://blog.csdn.net/LIUZHIOJ/article/details/82957176
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞