数据结构 - 栈 - 括号匹配

用栈来实现括号匹配。

括号匹配

假设一个算术表达式中包含圆括号、方括号两种类型的括号,试编写一个判断表达式中括号是否匹配的程序,匹配返回 Match succeed!,否则返回 Match false!

输入格式

包含圆括号、方括号两种类型括号的算术表达式。

输出格式

  • 匹配输出 Match succeed!

  • 不匹配输出 Match false!

输入输出样例

样例 1

输入

[1+2*(3+4*(5+6))]

输出

Match succeed!

样例 2

输入

(1+2)*(1+2*[(1+2)+3)

输出

Match false!

注意输入输出最后都以换行符 \n 结尾。

题解

STL 中的 stack 实现括号匹配。熟悉 stack 的使用。

#include <cstdio>
#include <cstdlib>
#include <stack>

using namespace std;

int main()
{
    char ch;
    stack<char> s;
    while ((ch = getchar()) && ch != '\n') {
        if (ch == '[' || ch == '(') {
            s.push(ch);
        }
        else if (ch == ']') {
            if (s.empty()) {
                s.push(ch); break;
            }
            else {
                if (s.top() == '[') s.pop();
                else break;
            }
        }
        else if (ch == ')') {
            if (s.empty()) {
                s.push(ch); break;
            }
            else {
                if (s.top() == '(') s.pop();
                else break;
            }
        }
    }
    if (s.empty()) printf("Match succeed!\n");
    else printf("Match false!\n");

    return 0;
}

posted on   Black_x  阅读(168)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示