美文网首页
括弧匹配检验

括弧匹配检验

作者: Co_zy | 来源:发表于2018-07-19 16:43 被阅读0次

    括弧匹配检验

    运行时限: 10000 ms 单次运行时限: 10000 ms 内存限制: 32 MB
    总提交: 275次 通过: 103次

    题目描述

    假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ] ( ))或 [ ( [ ] [ ] ) ]等为正确的匹配,[ ( ] ) 或 ( [ ] ( ) 或 ( ( ) ) )均为

    错误的匹配。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配? 输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配

    匹配就输出“OK”,不匹配就输出“Wrong”。输入一个字符串:[ ( [ ] [ ] ) ],输出: OK

    程序输入说明

    输入仅一行字符(字符个数小于255)。

    程序输出说明

    匹配就输出“OK”,不匹配就输出“Wrong”。

    程序输入样例

    可见格式 带空格和换行符的格式 带空格和换行符的格式说明

    [ ( ] )

    程序输出样例

    Original Transformed 带空格和换行符的格式说明

    Wrong

    注意栈顶元素,top = 0,加入1个元素后stack[top++],top为1,此时栈顶元素为stack[]top-1] 
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        char input[1000];
        char stack[1000];
        int i;
        int top;
        int flag;
        int len;
        while(~scanf("%s",input))
        {
            len = strlen(input);
            i = 0;
            flag = 1;
            top = 0;
            while(i<len && input[i] && flag)
            {
                if(input[i] == '[' || input[i] == '(')
                    stack[top++] = input[i];
                if(input[i] == ']')
                    if(stack[top-1] == '[')
                        top--;
                    else
                        flag = 0;
                if(input[i] == ')')
                    if(stack[top-1] == '(')
                        top--;
                    else
                        flag = 0;
                i++;
            }
            if(flag && top ==0)
                printf("OK\n");
            else
                printf("Wrong\n");
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:括弧匹配检验

          本文链接:https://www.haomeiwen.com/subject/tpitmftx.html