news 2026/6/10 20:08:16

括号匹配问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
括号匹配问题

括号匹配是编程中经典的栈应用场景,核心要求是:给定一个仅包含括号(如()[]{}<>等)的字符串,判断括号的嵌套 / 排列是否满足「合法规则」,本质是验证左括号与右括号的对应关系

本文为该问题增加限制条件:即当有多种括号嵌套时,嵌套的顺序应为{ → [ → ( → <。举例,[ 只能被嵌套到 { 中,但 ( 可以被嵌套到 { 或 [ 中,以此类推。

解题的核心原则是:
1.遍历整个字符串
2.遇到左括号直接入栈(该题在入栈时添加判断条件确保嵌套的顺序为{ → [ → ( → <)
3.遇到右括号时检查此时的栈顶括号(stackk.top())是否与右括号匹配。若匹配,则进行出栈操作;若不匹配,则直接返回false
4.遍历结束后,检查栈是否为空。若为空,则说明括号均能匹配成功;若不为空,则括号匹配失败

给出解题代码如下(C++)如下:

#include <iostream> #include <vector> #include <algorithm> #include <stack> #include <string> using namespace std; bool isMatched(string s) { stack<char> stackk; for (int i = 0; i < s.size(); i++) { //遇到左括号直接入栈 if (s[i] == '{') { if (!stackk.empty()) { return false; } stackk.push(s[i]); } if (s[i] == '[') { if (!stackk.empty() && stackk.top()!='{') { return false; } stackk.push(s[i]); } if (s[i] == '(') { if (!stackk.empty() && (stackk.top() != '{' && stackk.top() != '[')) { return false; } stackk.push(s[i]); } if (s[i] == '<') { if (!stackk.empty() && (stackk.top() == '<')) { return false; } stackk.push(s[i]); } //出栈 if (s[i] == '}') { if (stackk.empty() || stackk.top() != '{') { return false; } else { stackk.pop(); } } if (s[i] == ']') { if (stackk.empty() || stackk.top() != '[') { return false; } else { stackk.pop(); } } if (s[i] == ')') { if (stackk.empty() || stackk.top() != '(') { return false; } else { stackk.pop(); } } if (s[i] == '>') { if (stackk.empty() || stackk.top() != '<') { return false; } else { stackk.pop(); } } } if (stackk.empty()) { return true; } else { return false; } } int main() { string s; cin >> s; if (isMatched(s)) { cout << "Matched" << endl; } else { cout << "Fail" << endl; } }

该算法的时间复杂度为O(n)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:43:02

garfish微前端教程,零基础入门到精通,收藏这篇就够了

Garfish 微前端框架使用教程 【免费下载链接】garfish 项目地址: https://gitcode.com/gh_mirrors/gar/garfish 1. 项目的目录结构及介绍 Garfish 是一个用于构建微前端应用的框架。以下是项目的目录结构及其介绍&#xff1a; garfish/ ├── packages/ # 存放G…

作者头像 李华
网站建设 2026/6/7 11:22:06

Open-AutoGLM物流信息同步全解析(业界首次公开架构细节)

第一章&#xff1a;Open-AutoGLM物流信息同步全解析&#xff08;业界首次公开架构细节&#xff09;Open-AutoGLM 是首个面向全球物流网络的开源自动语义对齐引擎&#xff0c;其核心能力在于实现多源异构物流系统间的信息实时同步与语义一致性保障。该系统通过融合大语言模型推理…

作者头像 李华
网站建设 2026/6/10 6:30:57

构建高质量软件的基石:测试团队的角色与协作体系

在瞬息万变的数字化时代&#xff0c;用户对软件质量的期望值持续攀升。2025年的今天&#xff0c;随着DevOps和敏捷开发的深度普及&#xff0c;测试团队已从传统的“质量守门员”转型为“质量赋能者”。本文针对软件测试从业者群体&#xff0c;深入解析现代测试团队中各角色的定…

作者头像 李华
网站建设 2026/6/9 18:21:19

【酒店比价技术新突破】:基于Open-AutoGLM的动态定价爬虫设计全公开

第一章&#xff1a;酒店比价技术新突破概述近年来&#xff0c;随着在线旅游市场的迅猛发展&#xff0c;酒店比价技术迎来了前所未有的创新浪潮。借助人工智能、大数据分析与实时爬虫架构的深度融合&#xff0c;新一代比价系统不仅提升了价格采集的时效性与准确性&#xff0c;更…

作者头像 李华
网站建设 2026/6/10 14:46:50

下一代 AI 终端 Warp:10 分钟上手(图文版)

文章目录1. 前言&#xff1a;先搞清定位&#xff08;Terminal ≠ Shell&#xff09;2. 优势&#xff08;为什么值得试&#xff09;3. 限制与注意&#xff08;先把话说在前面&#xff09;4. 快速上手&#xff08;建议按这 3 步&#xff09;5. 核心功能&#xff08;图文速览&…

作者头像 李华