news 2026/5/28 0:37:47

括号匹配问题

作者头像

张小明

前端开发工程师

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/5/27 14:24:18

为什么你的Open-AutoGLM跑不起来?可能是requirements.txt少了这4个包

第一章&#xff1a;Open-AutoGLM requirements.txt 配置在构建 Open-AutoGLM 项目时&#xff0c;requirements.txt 文件是管理 Python 依赖的核心组件。该文件定义了项目运行所需的所有第三方库及其版本约束&#xff0c;确保开发、测试与生产环境的一致性。依赖项声明规范 所有…

作者头像 李华
网站建设 2026/5/21 11:57:28

为什么90%的比价项目都失败了?Open-AutoGLM避坑指南大公开

第一章&#xff1a;为什么90%的比价项目都失败了&#xff1f;在电商与价格敏感型应用激增的背景下&#xff0c;比价系统看似是技术实现中的“简单项目”。然而&#xff0c;实际落地时&#xff0c;超过九成的比价项目在6个月内停止维护或彻底失败。根本原因并非技术门槛过高&…

作者头像 李华
网站建设 2026/5/27 2:20:46

从零构建统计学核心:Python 实现 PDF、CDF 与逆向采样

这是一部关于如何从零构建统计学核心算法的深度技术指南。 为了真正达到“通俗易懂”且“内容详实”的要求&#xff0c;我将这篇内容扩展为六个核心章节。我们将不仅仅停留在代码层面&#xff0c;而是深入到数学直觉、算法原理、工程实现以及实际应用场景中。 我们将以书中的“…

作者头像 李华
网站建设 2026/5/25 15:40:49

nt!KiQuantumEnd函数分析看各个线程切换函数的作用

nt!KiQuantumEnd函数分析看各个线程切换函数的作用 1: kd> kc# 00 nt!KiQuantumEnd 01 nt!KiDispatchInterrupt 02 hal!HalpDispatchInterrupt WARNING: Frame IP not in any known module. Following frames may be wrong. 03 0x0Thread->Quantum Process->ThreadQu…

作者头像 李华