尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【栈】LC 20.有效的括号
文章目录前言一、题目1、原题链接2、题目描述二、个人思路整理1、思路分析2、解题代码三、知识风暴前言本专栏文章为《LeetCode 热题 100》的刷题题解相关内容如有侵权立即删除。一、题目1、原题链接20.有效的括号2、题目描述二、个人思路整理1、思路分析利用栈遇到左括号将其直接压入栈中遇到右括号首先判断栈是否为空。若为空说明没有对应的左括号直接返回false若栈不为空弹出栈顶元素检查是否与当前右括号类型匹配。若不匹配返回false。遍历结束后检查栈是否为空。若栈为空说明所有左括号都已匹配返回true否则返回false。复杂度分析时间复杂度O ( n ) O(n)O(n)一个for循环每个字符最多进栈一次、出栈一次其中n nn为字符串 s 的长度。空间复杂度O ( n ) O(n)O(n)开辟辅助栈空间 。2、解题代码classSolution{public:boolisValid(string s){// 奇数长度字符串不可能满足直接返回falseif(s.size()%2){returnfalse;}stackcharst;for(inti0;is.size();i){// 遇到左括号直接入栈if(s[i](||s[i][||s[i]{){st.push(s[i]);}else{// 遇到右括号对其是否匹配进行判断// 如果栈为空说明没有对应的左括号if(st.empty()){returnfalse;}// 检查栈顶元素是否匹配if(s[i])st.top()(||s[i]]st.top()[||s[i]}st.top(){){st.pop();// 匹配成功则出栈左括号}else{returnfalse;// 如果存在左、右括号不匹配直接返回false这个判断分支必须要有否则会导致后续逻辑混乱甚至出错}}}returnst.empty();}};三、知识风暴关于检查栈顶元素是否匹配时若不写else条件导致的后果以下为大模型相关解释防止遗忘以输入s ([}}])为例处理前 2 个字符(和[依次入栈此时栈内元素为[(, []栈顶是 ‘[’。处理第 3 个字符}右大括号触发else分支进入if(s[i] ) ... || s[i] } st.top() {)判断。因为当前栈顶是[条件不成立所以没有执行st.pop()。关键错误点代码没有写else { return false; }因此程序忽略了这个错误继续执行循环处理第 4 个字符}右大括号再次进入判断此时栈顶依然是[条件仍不成立再次跳过。处理第 5 个字符]右中括号触发判断s[i] ] st.top() [条件成立执行 st.pop()将[弹出栈。处理第 6 个字符)右圆括号触发判断s[i] ) st.top() (条件成立执行st.pop()将(弹出栈。循环结束此时栈为空st.empty()为true最终代码返回了true但实际应为false。
RELATED

相关推荐

免费风扇控制软件FanControl实操指南:三步让机箱安静下来

免费风扇控制软件FanControl实操指南:三步让机箱安静下来

免费风扇控制软件FanControl实操指南:三步让机箱安静下来 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending…

📅 2026/9/15 13:33:21
Windows 11 越来越卡?Win11Debloat 一键系统优化与隐私清理终极指南

Windows 11 越来越卡?Win11Debloat 一键系统优化与隐私清理终极指南

Windows 11 越来越卡?Win11Debloat 一键系统优化与隐私清理终极指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to dec…

📅 2026/10/7 13:12:06
Visual C++ 运行库报错不用慌:AIO 工具一行命令装齐 6 大版本

Visual C++ 运行库报错不用慌:AIO 工具一行命令装齐 6 大版本

Visual C 运行库报错不用慌:AIO 工具一行命令装齐 6 大版本 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你把期待已久的游戏下载好,双…

📅 2026/10/23 22:18:49
MORE NEWS

更多资讯

📰

OpenCV 4.5.5工业部署指南:DNN一致性、编译避坑与静态SDK封装

简介:本资源为OpenCV 4.5.5官方版本预编译完成的C动态库分发包,面向计算机视觉初学者、算法工程师及嵌入式开发人员,有效解决手动编译OpenCV耗时长、环境依赖复杂、易出错等痛点,开箱即用,显著降低项目集成门槛。压缩包…

📰

3D结构语义化:让大模型真正‘看懂’CAD与网格数据

简介:这是一款专为Adobe Illustrator设计师打造的3D效果增强插件,面向平面设计从业者与希望在AI中快速实现三维建模的初/中级用户,有效弥补Illustrator原生3D功能薄弱的短板,让二维矢量设计无缝升级为具备深度、材质、光影与可导出…

📰

YOLOv5+ArcFace双阶段解耦:检测不精准为何识别仍鲁棒?

简介:本资源是一个基于YOLOv5与ArcFace双模型协同的人脸识别完整项目实现,面向深度学习初学者、计算机视觉开发者及AI安防应用实践者,解决端到端人脸检测高精度身份识别的一体化落地问题,适用于门禁系统、考勤管理、智能监控等实际…

📰

Windows下Flash Attention编译与优化实战

1. Windows环境下Flash Attention编译实战指南在深度学习领域,Flash Attention作为Transformer模型的高效注意力实现方案,能显著提升训练和推理速度。然而在Windows平台编译时,CUDA版本兼容性问题往往成为开发者的噩梦。本文将分享我在Window…

📰

AI科研idea生成:从模糊兴趣到可判定问题的四步流水线

博一上学期最难熬的时刻,往往不是实验跑不出结果,而是组会上导师问“你最近在想什么问题”,你只能把上周读过的三篇论文的方法复述一遍,然后补一句“我再去看看”。这个场景说明的问题,比“读得不够多”更严重&#xf…

📰

GEO入门指南:从RAG架构到结构化数据标记的AI搜索优化实操

简介:这份资源是面向数字营销、内容运营与SEO从业者的GEO入门与进阶指南,帮助中小企业主、内容创作者和技术人员在AI搜索时代抢占流量先机。内容系统讲解生成式引擎优化的核心原理,对比GEO与传统SEO在目标、关键词策略、排名机制上的差异&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬