当前位置: 首页 > 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.rkmt.cn/news/127268.html

相关文章:

  • (Open-AutoGLM性能优化秘籍):提升酒店数据抓取效率的7种方法
  • 回归测试策略与范围界定:构建可持续的软件质量防线‌
  • 2025-2026 北京继承律师服务品质排行榜推荐:实战案例验证与权威机构口碑名单 - 老周说教育
  • 【技术内幕】Open-AutoGLM如何实现毫秒级外卖订单生成?
  • Open-AutoGLM快递路径预测黑科技(基于时空图神经网络的大模型应用)
  • (最新)2025年有哪些免费降AI率工具?亲测2个靠谱平台,AI率降到15%以内! - 还在做实验的师兄
  • 使用toaster开源库实现警告toast样式
  • SSM校外实习管理平台6tu82(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • NMN如何选择?2025 NMN权威榜:抗衰力与成分透明度双维PK,十大品牌谁登顶? - 资讯焦点
  • 伺服驱动器中DSP与FPGA高效协同架构解析
  • ELK日志分析平台从零搭建到生产实践
  • 深圳到北京、天津、石家庄、唐山搬家公司排行榜,附搬家费用明细 - 物流人
  • android studio2025.2.2汉化重大bug(附解决方案)
  • 光伏板清关.轮胎反倾销清关.床垫清关.高尔夫球车清关 - 资讯焦点
  • 【Open-AutoGLM酒店比价实战】:揭秘AI驱动的实时价格监控系统核心技术
  • 禁止过分投入2:夏日大排档 /Love Too Easily 2 Summer Pocha Build.20586137(6.9G) 免安装中文版游戏资源分享及攻略教程
  • 【Open-AutoGLM外卖自动下单揭秘】:如何用AI模型实现全自动订餐?
  • 轮回修仙传 v1.0.11.27.1 免安装中文版下载及使用方法
  • 【Open-AutoGLM物流同步实战指南】:掌握高效信息同步的5大核心技术
  • 【TextIn大模型加速器 + 火山引擎】基于 TextIn 与火山引擎豆包大模型的智能文档解析工作流构建与实践
  • 从零撸个工业级 shared_ptr?我花了半个月,现在手把手教你!
  • 网络 游戏服务器该怎么维护?
  • C++为什么推荐使用 make_shared 而不是 new 构造 shared_ptr?
  • 2025宏观分享:各地经济目标深度拆解与区域分化全景
  • 从Reactor到网络库:10天打造生产级C++高性能网络库
  • AI也会三思而后答?揭秘Self-RAG智能检索术
  • 成都到广州、深圳、东莞、佛山搬家公司专业度排行榜,附搬家费用明细 - 物流人
  • stm32入门篇2 - 实践
  • 时代变迁下的中年职场危机:曾经的红利时代已逝,集体被淘汰的警钟为谁而鸣?
  • 成都到北京、天津、石家庄、唐山搬家公司排行榜,附搬家费用明细 - 物流人