news 2026/9/29 19:07:28

括号匹配问题

作者头像

张小明

前端开发工程师

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/9/29 16:43:15

揭秘Open-AutoGLM如何实现毫秒级快递轨迹更新:技术架构全解析

第一章&#xff1a;揭秘Open-AutoGLM快递轨迹追踪的核心价值在现代物流体系中&#xff0c;快递轨迹的实时性与准确性直接影响用户体验与运营效率。Open-AutoGLM作为一种基于自动化大语言模型&#xff08;AutoGLM&#xff09;的开放架构&#xff0c;为快递轨迹追踪提供了智能化的…

作者头像 李华
网站建设 2026/9/30 3:26:54

换个角度看境外支付系统:警惕金融风险之安全测试实践

支付系统&#xff0c;这个名词相信生活在当下社会的大家应该都不在陌生了吧&#xff0c;他时时刻刻充斥在我们的日常生活中&#xff0c;哪里有交易发生&#xff0c;哪里就有它的身影。 其实直白的来说&#xff0c;支付系统是扮演着连接消费者、商家、银行和其他金融机构之间的…

作者头像 李华
网站建设 2026/9/29 22:24:35

Home-Assistant智能家居平台搭建与远程控制

前言 Home Assistant是目前最强大的开源智能家居平台&#xff0c;支持上千种设备和服务的集成。本文将介绍如何搭建Home Assistant并实现远程控制。 一、为什么选择Home Assistant 1.1 对比其他方案 特性Home Assistant米家HomeKit开源✅❌❌设备支持2000仅小米生态较少自动…

作者头像 李华
网站建设 2026/9/29 19:26:00

盲盒小程序定制案例|轻松打造专属盲盒乐园

盲盒小程序定制案例&#xff5c;轻松打造专属盲盒乐园 盲盒小程序全新页面、功能分享 传统与创新结合的新鲜玩法&#xff0c;玩家可以获得新鲜体验感。 核心功能玩法&#xff1a;一番赏、无限赏、登天阶.... 各种惊喜有趣的功能体验&#xff0c;带来视觉体验感的页面&#xff0…

作者头像 李华
网站建设 2026/9/30 5:27:43

【Open-AutoGLM快递轨迹追踪实战】:掌握AI驱动物流监控的5大核心技术

第一章&#xff1a;Open-AutoGLM快递轨迹追踪实战导论在现代物流系统中&#xff0c;实时、精准的快递轨迹追踪已成为提升用户体验与运营效率的核心能力。Open-AutoGLM 作为一款基于大语言模型与自动化推理引擎的开源框架&#xff0c;能够通过自然语言理解与结构化数据解析&…

作者头像 李华