news 2026/5/1 7:23:29

算法刷题第18天|LeetCode 20. 有效的括号——栈的经典入门应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法刷题第18天|LeetCode 20. 有效的括号——栈的经典入门应用

算法刷题第18天|LeetCode 20. 有效的括号——栈的经典入门应用

今天是算法刷题的第18天,刷到了栈最经典的入门题:有效的括号。这道题看似简单,却完美体现了栈“先进后出”的核心思想,非常适合用来巩固栈的基础用法。

一、题目回顾

题目链接:https://leetcode.cn/problems/valid-parentheses/
视频讲解:https://www.bilibili.com/video/BV1AF411w78g

给定一个只包含 ()[]{} 的字符串,判断是否有效:

1. 左括号必须用相同类型的右括号闭合
2. 左括号必须以正确顺序闭合
3. 每个右括号都有对应的左括号

示例:

- () → true
- ()[]{} → true
- (] → false
- ([)] → false
- ([]) → true

二、为什么用栈?

括号匹配的本质是:
后出现的左括号,要最先被闭合
→ 完全符合栈 后进先出(LIFO) 的特性。

生活里也很像:
先穿内衣→毛衣→外套,脱的时候必须先脱外套,再脱毛衣,最后脱内衣。
括号嵌套也是一样,最内层先闭合。

三、解题思路(标准栈解法)

1. 先做剪枝:字符串长度为奇数,直接返回 false (不可能成对)
2. 建一个栈,存未匹配的左括号
3. 遍历每个字符:
- 遇到左括号 ( [[__LINK_ICON]](https://leetcode.cn/problems/valid-parentheses/solutions/3958485/zhan-mo-ni-zhan-pi-pei-fa-by-an-cang-xua-zgok/?f_link_type=f_linkinlinenote&flow_extra=eyJpbmxpbmVfZGlzcGxheV9wb3NpdGlvbiI6MCwiZG9jX3Bvc2l0aW9uIjowLCJkb2NfaWQiOiJmOGNhNjcxZmFhYTMxN2ZiLTAxN2U3ZjgxZjViOTQ1N2EifQ%3D%3D&inline_doc_id=f8ca671faaa317fb-017e7f81f5b9457a)[ { → 入栈
- 遇到右括号:
- 栈空 → 无匹配左括号 → false
- 栈顶不匹配 → false
- 匹配 → 出栈
4. 遍历结束,栈必须为空才算全部匹配成功

四、代码实现(Python)

python
def isValid(s: str) -> bool:
# 奇数长度直接返回
if len(s) % 2 != 0:
return False

stack = []
# 右括号 → 对应左括号 的映射
mapping = {')': '(', ']': '[', '}': '{'}

for c in s:
# 右括号
if c in mapping:
# 栈空 或 不匹配
if not stack or stack[-1] != mapping[c]:
return False
stack.pop()
# 左括号
else:
stack.append(c)

# 最终栈必须为空
return len(stack) == 0


五、复杂度分析

- 时间复杂度:O(n)
每个字符只遍历一次,入栈出栈都是 O(1)
- 空间复杂度:O(n)
最坏情况全是左括号,栈存全部字符

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:22:02

大模型核心技术全景解析

📌 1. LLM —— Large Language Model(大型语言模型) ✅ 定义: 基于海量文本训练、参数量通常在数十亿(B)以上、采用 Transformer 架构的自回归语言模型。具备强大的上下文理解与生成能力。 🔹 常见代表: GPT 系列(OpenAI) Llama 系列(Meta) Qwen 系列(阿里云…

作者头像 李华
网站建设 2026/5/1 7:21:29

BepInEx游戏插件框架:5分钟掌握Unity游戏模组开发终极方案

BepInEx游戏插件框架:5分钟掌握Unity游戏模组开发终极方案 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 想要为心爱的Unity游戏添加新功能吗?渴望自定义游…

作者头像 李华
网站建设 2026/5/1 7:21:20

【开源软件】打造 macOS 纯本地 LLM 工作台 | Sidekick

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 一、项目概述 Sidekick 是一款面向 macOS 平台的原生应用,旨在让用户在无需安装任何第三方依赖的情况下,实现本地 LLM 对本地知…

作者头像 李华
网站建设 2026/5/1 7:20:14

API 接口自动化测试详细图文教程学习系列15--项目实战演练2

测试学习记录,仅供参考!项目实战演练--封装方法封装文件写入方法1、 在项目根目录下新建一个名称为“configs”的目录文件,用于存放配置文件,继续在该目录文件下新建名称为“setting.py”的 Python 文件,在 “setting.…

作者头像 李华
网站建设 2026/5/1 7:19:25

LLM动态评估:CSD框架解析与实践指南

1. 项目背景与核心价值在自然语言处理领域,大型语言模型(LLM)的评估一直是学术界和工业界关注的焦点。传统的静态评估方法存在明显的局限性——它们往往在固定数据集上测试模型性能,无法全面反映模型在真实场景中的动态表现。这就…

作者头像 李华