当前位置: 首页 > news >正文

括号匹配问题

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

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

解题的核心原则是:
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)

http://www.jsqmd.com/news/115328/

相关文章:

  • 2026年AI大模型学习攻略:从新手到专家,算法工程师的修炼手册!一篇文章掌握大模型与多模态奥秘!
  • (Open-AutoGLM性能优化秘籍):提升酒店数据抓取效率的7种方法
  • 还在手动点外卖?Open-AutoGLM让你每天省下30分钟,效率翻倍!
  • 年终总结资源合集
  • 回归测试策略与范围界定:构建可持续的软件质量防线‌
  • 前端安全性问题解决方案,零基础入门到精通,收藏这篇就够了
  • WPF利用Resx的多语言支持
  • 2025-2026 北京继承律师服务品质排行榜推荐:实战案例验证与权威机构口碑名单 - 老周说教育
  • 从数据采集到实时追踪,Open-AutoGLM全流程拆解,开发者必看
  • 2025上海装修公司优选:施工设计双优+业主高评价的五家盘点 - 资讯焦点
  • Kotlin资源合集
  • 探索式测试技巧与实战
  • 中国四通球阀制造厂家综合实力TOP10,市面上优质的四通球阀哪个好精选综合实力TOP企业 - 品牌推荐师
  • 【技术内幕】Open-AutoGLM如何实现毫秒级外卖订单生成?
  • 拒绝“狗熊掰棒子”!用 EWC (Elastic Weight Consolidation) 彻底终结 AI 的灾难性遗忘
  • Open-AutoGLM离线部署第一步:如何从Hugging Face稳定高速下载模型(完整教程)
  • 10个高效降AI率工具,MBA学生必备神器
  • 《NMN产品怎么选?十大NMN产品榜单助您了解2025年度市场动态》 - 资讯焦点
  • 【物流智能化转型关键】:Open-AutoGLM在快递轨迹追踪中的7个落地场景
  • Open-AutoGLM快递路径预测黑科技(基于时空图神经网络的大模型应用)
  • COMSOL有限元电场模型与ANSYS流体温度相变模拟分析
  • 【独家披露】大厂都在用的Open-AutoGLM虚拟机集群部署架构设计
  • nbsp;成分党狂喜!2025最好染发剂品牌公布:盖白效果最佳,,闭眼入不踩雷,手残党也能轻松上手 - 资讯焦点
  • 【UDS诊断(CommunicationControl_0x28服务)测试用例CAPL代码全解析⑨】 - 教程
  • (最新)2025年有哪些免费降AI率工具?亲测2个靠谱平台,AI率降到15%以内! - 还在做实验的师兄
  • 低配电脑运行Open-AutoGLM的黄金法则:3项配置+2个脚本=零延迟响应
  • 完整教程:【C++:C++11】详解C++11右值引用与移动语义:从性能瓶颈到零拷贝优化
  • 如何用一行命令解决Open-AutoGLM环境问题?requirements.txt高级配置技巧曝光
  • 优惠卷业务超卖问题解决方案
  • 采用DrissionPage批量采集抖音视频