括弧匹配检验

2018-07-19  本文已影响0人  Co_zy

括弧匹配检验

运行时限: 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;
}
上一篇 下一篇

猜你喜欢

热点阅读