news 2026/6/22 10:01:43

括号匹配问题

作者头像

张小明

前端开发工程师

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/20 21:51:47

前端大文件上传,零基础入门到精通,收藏这篇就够了

一、切片上传技术原理 切片上传是把大文件分割成多个较小的切片&#xff0c;分别上传这些切片&#xff0c;最后在服务器端将它们合并成完整文件。这种方式能有效应对网络不稳定导致的上传失败问题&#xff0c;还可利用多线程并行上传&#xff0c;提升上传效率。 二、前端实现…

作者头像 李华
网站建设 2026/6/20 5:25:24

前端安全性问题解决方案,零基础入门到精通,收藏这篇就够了

当涉及到前端开发时&#xff0c;安全性是至关重要的一环。在当今数字化的世界中&#xff0c;用户数据的保护和应用程序的安全性变得愈发重要。作为前端开发者&#xff0c;我们不仅需要关注页面的美观和功能&#xff0c;还要时刻牢记确保用户数据的安全以及应用程序的健壮性。本…

作者头像 李华
网站建设 2026/6/20 18:13:38

低配电脑运行Open-AutoGLM的黄金法则:3项配置+2个脚本=零延迟响应

第一章&#xff1a;Open-AutoGLM 低配置电脑优化在资源受限的低配置设备上部署 Open-AutoGLM 模型时&#xff0c;需通过多种技术手段实现性能与效率的平衡。尽管该模型具备强大的自动化推理能力&#xff0c;但其默认运行模式对内存和计算资源要求较高。为确保在低端硬件上稳定运…

作者头像 李华
网站建设 2026/6/19 10:59:44

Open-AutoGLM部署性能提升300%的秘密:你不可不知的5项调优技术

第一章&#xff1a;Open-AutoGLM 虚拟机部署方案环境准备与系统要求 部署 Open-AutoGLM 前需确保虚拟机满足最低资源配置。推荐使用 64 位 Linux 系统&#xff0c;如 Ubuntu 22.04 LTS&#xff0c;并具备以下硬件支持&#xff1a; CPU&#xff1a;至少 8 核&#xff0c;建议启用…

作者头像 李华
网站建设 2026/6/21 10:48:24

保姆级教程:Claude Code接入GLM-4.6(零基础也能跟着做)

文章目录0. 先讲清楚&#xff1a;Claude Code 和 GLM-4.6 是什么1. 你需要准备什么1.1 你需要的软件/账号1.2 你会用到的几个“新词”解释2. 第一步&#xff1a;安装 Node.js&#xff08;Claude Code 必备&#xff09;2.1 Windows 安装&#xff08;最简单方式&#xff09;2.2 m…

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

伺服驱动器中DSP与FPGA高效协同架构解析

一、整体架构二、FPGA 负责的功能&#xff08;硬件实时层&#xff09;1. PWM 波形生成空间矢量 PWM (SVPWM)死区时间控制最小零矢量控制频率&#xff1a;16kHz2. 电流采样与处理// Sigma-Delta调制器处理*CurSampCtrl // ADC采样启动延时设置*CurSampCtrlSec // 第二组采…

作者头像 李华