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

题解:AcWing 6030 字符串匹配问题

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

AcWing:6030. 字符串匹配问题 - AcWing题库

【题目描述】

字符串中只含有括号(),[],<>,{},判断输入的字符串中括号是否匹配。

如果括号有互相包含的形式,从内到外必须是<>,(),[],{}

例如,输入:[()]应该输出:YES,而输入([])([)]都应该输出NO

【输入】

第一行为一个整数n nn,表示以下有多少个由括号组成的字符串。

接下来的n nn行,每行都是一个由括号组成的长度不超过150 150150的字符串。

【输出】

n nn行,每行输出YESNO

【输入样例】

5 {}{}<><>()()[][] {{}}{{}}<<>><<>>(())(())[[]][[]] {{}}{{}}<<>><<>>(())(())[[]][[]] {<>}{[]}<<<>><<>>>((<>))(())[[(<>)]][[]] ><}{{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]

【输出样例】

YES YES YES YES NO

【算法标签】

#栈#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;intpri[128];// pri[i]: 字符i的优先级// 初始化括号的优先级voidinitPri(){// 左括号都是正数,右括号都是负数,配对的括号的优先级互为相反数pri['<']=1;pri['(']=2;pri['[']=3;pri['{']=4;pri['>']=-1;pri[')']=-2;pri[']']=-3;pri['}']=-4;}// 求解一组数据voidsolve(){stack<char>stk;// 括号栈string s;// 输入字符串cin>>s;// 输入字符串for(inti=0;i<s.length();++i)// 遍历字符串的每个字符{if(pri[s[i]]>0)// 如果s[i]是左括号{if(stk.empty())// 如果栈为空{stk.push(s[i]);// 直接入栈}else{if(pri[s[i]]<=pri[stk.top()])// 如果当前左括号的优先级 <= 栈顶左括号的优先级{stk.push(s[i]);// 入栈}else{cout<<"NO"<<endl;// 否则不匹配return;}}}else// 如果s[i]是右括号{if(stk.empty())// 如果栈为空{cout<<"NO"<<endl;// 不匹配return;}else{if(pri[s[i]]+pri[stk.top()]==0)// 如果当前右括号和栈顶左括号匹配(优先级和为0){stk.pop();// 出栈}else{cout<<"NO"<<endl;// 否则不匹配return;}}}}if(stk.empty())// 如果遍历结束后栈为空{cout<<"YES"<<endl;// 所有括号正确匹配}else{cout<<"NO"<<endl;// 栈中还有未匹配的左括号}}intmain(){initPri();// 初始化优先级表intn;// 测试数据组数cin>>n;// 输入测试组数while(n--)// 处理每组测试数据{solve();}return0;// 程序正常结束}

【运行结果】

5 {}{}<><>()()[][] YES {{}}{{}}<<>><<>>(())(())[[]][[]] YES {{}}{{}}<<>><<>>(())(())[[]][[]] YES {<>}{[]}<<<>><<>>>((<>))(())[[(<>)]][[]] YES ><}{{[]}<<<>><<>>>((<>))(())[[(<>)]][[]] NO
http://www.jsqmd.com/news/727836/

相关文章:

  • 【Dify 2026插件安全开发黄金法则】:20年安全架构师亲授5大零信任实践与3类高危漏洞规避清单
  • 天津企业记账避坑参考
  • 电子元器件基础知识
  • 国内主流桥梁护栏厂家实测排行及资质盘点 - 奔跑123
  • 做小程序的流程,90%的人只完成了前3步就卡住了
  • 用rand7()函数构造函数rand10()
  • 数据血缘分析难题的Python解决方案:深度解析sqllineage技术实现
  • Hermes地缘政治市场模拟器:OSINT与预测市场的AI推演实践
  • Rusted PackFile Manager:Total War模组开发的终极指南与完整教程
  • 终极暗黑破坏神2存档修改器:Diablo Edit2完全指南
  • Android 12/13 开机广播实战:别再只用BOOT_COMPLETED了,LOCKED_BOOT_COMPLETED才是新宠
  • 国内道路护栏实力厂家排行 实测资质与产能对比 - 奔跑123
  • R语言数据报告革命已来:Tidyverse 2.0如何让金融/医疗/零售企业周报生成效率提升370%?(附Gartner验证的ROI测算模板)
  • 别再手动传Token了!SAP PI/PO REST接口OAuth 2.0自动化配置与测试全流程
  • PyTorch 2.9 里 torch.compile 为什么首个请求更慢?4 组 GPU 实验讲透冷启动、重编译与止损方案
  • 字节面试官问:“你写了Harness Engineer,那你说说它的定义和与其他概念的区别”
  • 【Dify 2026边缘部署终极指南】:3大架构陷阱、5步零故障上线、2026 Q1实测延迟压降至87ms
  • (原创)2026安卓面试复盘
  • 终极指南:5步快速安装配置foobar2000开源歌词插件foo_openlyrics
  • 国内主流草坪护栏厂家实力排行及核心优势解析 - 奔跑123
  • 怎样高效使用Adobe-GenP:完整Adobe激活工具实用指南
  • 别再只用MD5了!聊聊Java里更安全的HmacSHA1签名怎么玩(附完整代码)
  • QUIC 式丢包检测(部分)
  • 显瘦不是靠勒紧,而是版型懂你身材
  • 5步轻松搞定小红书内容批量采集:XHS-Downloader终极使用指南
  • 免费开源桌面分区管理工具NoFences:3步快速整理Windows桌面图标
  • 自增自减运算符
  • WebLaTeX零基础入门指南:5分钟搭建你的云端LaTeX写作环境
  • Illustrator批量替换神器:ReplaceItems.jsx如何让你告别重复劳动
  • 测试博文标题 at 2026-04-30