栈----7-9 括号匹配

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

输入格式:

输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。

输出格式:

如果括号配对,输出yes,否则输出no。

输入样例1:

sin(10+20)

输出样例1:

yes

输入样例2:

{[}]

输出样例2:

no

代码演示:22分

事实上,在test==1还不能完全说明匹配成功,因为可能是{【】{}这样的情况,最后剩下{,是不匹配的,然而test==1。所以最后的判断应该是top==-1;

#include<stdio.h>
#include<string.h>

int check(char *s, int top, char op) {
    if (op == ')') {
        if (s[top] == '(')
            return 1;
    } else if (op == ']') {
        if (s[top] == '[')
            return 1;
    } else if (op == '}') {
        if (s[top] == '{')
            return 1;
    }
    return 0;
}

int main() {
    char op[100];
    scanf("%s", op);
    int len = strlen(op);

    char s[100];
    int top = -1;
    int test;

    for (int i = 0; i < len; i++) {
        //入栈
        if (op[i] == '(') {
            s[++top] = '(';
        } else if (op[i] == '[') {
            s[++top] = '[';
        } else if (op[i] == '{') {
            s[++top] = '{';
        }

        //检查匹配,成功就弹出
        if (op[i] == ')' || op[i] == ']' || op[i] == '}') {
            test = check(s, top, op[i]);
            if (test == 1) {
                top--;
            } else {
                printf("no\n");
                return 0; // 输出结果后直接结束程序
            }
        }
    }

    if (top == -1) {
        printf("yes\n");
    } else {
        printf("no\n");
    }
    
    return 0;
}

相关推荐

  1. ----7-9 括号匹配

    2024-06-11 10:08:02       24 阅读
  2. 的简单应用:括号匹配

    2024-06-11 10:08:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-11 10:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-11 10:08:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-11 10:08:02       82 阅读
  4. Python语言-面向对象

    2024-06-11 10:08:02       91 阅读

热门阅读

  1. Milvus--向量数据库

    2024-06-11 10:08:02       35 阅读
  2. 13-Ribbon-负载均衡策略

    2024-06-11 10:08:02       37 阅读
  3. 【react】如何合理使用useEffect

    2024-06-11 10:08:02       27 阅读
  4. SPOOL Command Usage

    2024-06-11 10:08:02       33 阅读
  5. R语言:使用 readr 包进行数据导入和解析

    2024-06-11 10:08:02       29 阅读
  6. 数据中台、数据仓库、数据湖的区别和关联

    2024-06-11 10:08:02       38 阅读
  7. 基于神经网络的股票K线数据预测未来涨幅

    2024-06-11 10:08:02       28 阅读
  8. day28回溯算法part04| 93.复原IP地址 78.子集 90.子集II

    2024-06-11 10:08:02       38 阅读
  9. Github 2024-06-08 Rust开源项目日报Top10

    2024-06-11 10:08:02       39 阅读
  10. 最新linux常用基础命令

    2024-06-11 10:08:02       24 阅读
  11. 力扣刷题[3179]--K秒后第N个元素的值(Python)

    2024-06-11 10:08:02       37 阅读