首页/新闻资讯/正文详情

LeetCode678:通配符括号匹配的双栈与动态规划解法

发布时间:2026/11/6 2:52:11 来源:云帆数科 栏目:资讯中心
LeetCode678:通配符括号匹配的双栈与动态规划解法
1. 题目解析与核心思路leetcode678是一道关于字符串有效性的算法题题目要求判断包含三种字符(、)和的字符串是否满足括号匹配规则。其中可以视为左括号、右括号或空字符。这道题在2023年字节跳动校招笔试中出现过是栈和动态规划结合的经典例题。字符串有效性的判定需要满足两个条件任何前缀中左括号的数量不少于右括号的数量整个字符串中左括号和右括号的数量相等关键难点在于通配符*的多义性处理这使简单的栈方法无法直接适用。我在实际面试中遇到过至少3次这个问题的变种。2. 双栈解法实现细节2.1 数据结构设计采用双栈结构分别存储左括号和星号的位置索引left_stack [] # 存储(的索引 star_stack [] # 存储*的索引这种设计可以在遇到右括号时优先消耗左括号当左括号不足时用星号替代最后处理剩余的左括号和星号匹配2.2 遍历处理流程遍历字符串时的处理逻辑for i, char in enumerate(s): if char (: left_stack.append(i) elif char *: star_stack.append(i) else: if left_stack: left_stack.pop() elif star_stack: star_stack.pop() else: return False实际编码时容易忽略索引存储的顺序性我曾因此导致一个隐蔽的bug应该用append()和pop()维护栈结构而不是随意操作列表。3. 边界条件处理技巧3.1 剩余括号匹配遍历结束后需要处理栈中剩余元素while left_stack and star_stack: if left_stack[-1] star_stack[-1]: left_stack.pop() star_stack.pop() else: break这个while循环有两个易错点必须确保星号在左括号右侧才能匹配循环终止条件要同时判断两个栈非空3.2 复杂度分析时间复杂度O(n) 只需一次遍历和最多一次栈处理 空间复杂度O(n) 最坏情况下需要存储所有字符索引4. 动态规划解法对比4.1 DP状态定义定义dp[i][j]表示前i个字符中左括号比右括号多j个的可能性j的范围是[0, n]因为最多可能有n个左括号未匹配初始化dp[0][0] True4.2 状态转移方程for i in range(1, n1): for j in range(n1): if s[i-1] (: dp[i][j] dp[i-1][j-1] if j 0 else False elif s[i-1] ): dp[i][j] dp[i-1][j1] if j n else False else: dp[i][j] dp[i-1][j-1] or dp[i-1][j1] or dp[i-1][j]DP解法在面试中要求解释清楚状态定义和转移逻辑我曾被面试官连续追问了5层为什么这样设计状态。5. 常见错误与测试用例5.1 典型错误案例忽略星号的三种可能性处理剩余栈元素时顺序错误DP解法中j的范围设置不当5.2 必备测试用例测试用例集 1. () → True 2. (*) → True 3. (*)) → True 4. ((*) → False 5. *)(* → False 6. → True 7. (((*** → True 8. )*( → False6. 算法优化与变种6.1 贪心算法优化维护可能的最小和最大未匹配左括号数low high 0 for c in s: if c (: low 1 high 1 elif c ): low max(low-1, 0) high - 1 else: low max(low-1, 0) high 1 if high 0: return False return low 06.2 变种题目只有(和)的基础版本leetcode20需要输出所有有效字符串的变种*只能代表左括号或右括号的限制条件我在实际刷题中发现掌握这道题的多种解法可以帮助快速解决至少5种相关的括号匹配问题。特别是在处理通配符场景时双栈法的思路可以扩展到其他符号匹配场景。

相关推荐

Redis与Memcached深度对比:内存数据库选型指南
Redis与Memcached深度对比:内存数据库选型指南

1. 内存数据库选型之争的背景2003年诞生的Memcached和2009年问世的Redis,都是内存数据存储领域的里程碑式产品。作为后端开发者,我们经常需要在高并发场景下解决数据缓存问题。早期Memcached凭借简单的键值存储模型和高效的LRU淘汰机制,成为互… · 2026/11/6 2:52:11

MCMC算法原理与应用:从随机游走到概率探索
MCMC算法原理与应用:从随机游走到概率探索

1. 从随机游走到概率探索:MCMC的实用价值想象你面前有一张复杂的地形图,上面有无数山峰和山谷,每个点的高度代表概率密度。传统方法就像盲人摸象,只能看到局部;而MCMC则像配备高度计的无人机,通过智能随机游… · 2026/11/6 2:52:11

SITB-50iA-Z隔离端子台安装与避坑指南:CRMA15/16接口配置详解
SITB-50iA-Z隔离端子台安装与避坑指南:CRMA15/16接口配置详解

简介:这份PDF文档是发那科SITB-50IA-Z隔离端子台的官方说明书,面向工业自动化领域的电气工程师、机器人系统集成人员及设备维护人员,用于解决机器人IO板卡在外部电压或电流过高时易损坏的问题。文档共8页,以PDF格式打包&#xff0… · 2026/11/6 2:51:11

苏州相城电工证报名多久拿证,工地太忙怎么高效备考
苏州相城电工证报名多久拿证,工地太忙怎么高效备考

苏州相城电工证报名多久拿证,工地太忙怎么高效备考 工地太忙根本没时间复习考试,这几乎是每个特种作业人员的真实写照,尤其是电工证这种必须通过理论和实操双重考核的证件,复习难度和时间成本都比较高。你是不是也经常因为项目赶工期,连系统复习的时间都… · 2026/11/7 0:31:51

福建如何查电工证网上查询最全攻略,外省证能转吗
福建如何查电工证网上查询最全攻略,外省证能转吗

福建如何查电工证网上查询最全攻略,外省证能转吗 之前考的证在外省能不能转过来,这个问题真的折磨了不少人,特别是像我这样在漯河工地干了五年的电工,手里拿着河南的低压电工证,想在福建干项目,却发现证件查不到,连项目负责人都拦着不让上。这事儿不是… · 2026/11/7 0:31:51

电工证在哪里刷视频网上查询方便吗
电工证在哪里刷视频网上查询方便吗

电工证在哪里刷视频网上查询方便吗 之前考的证在外省能不能转过来?这可能是很多刚毕业的应届生、正在换工作或想转行从事电工行业的朋友最关心的问题。特别是像漯河这样的地方,很多同学毕业后在本地找工作时发现, 电工证在哪里刷视频… · 2026/11/7 0:31:51

磐安考电工证在哪里通过率揭秘
磐安考电工证在哪里通过率揭秘

磐安考电工证在哪里通过率揭秘 不知道去哪报名怕被中介坑,尤其是像磐安这样的地方,信息闭塞、渠道杂乱,很多想考证的人容易被“包过班”“代考”这些话术忽悠,最终花了钱还拿不到证,耽误了工作和前途。其实,电工证是国家强制认证的特种作业操作证,… · 2026/11/7 0:31:51

70岁电工考一个特种作业操作证还来得及?官方报名入口详解
70岁电工考一个特种作业操作证还来得及?官方报名入口详解

70岁电工考一个特种作业操作证还来得及?官方报名入口详解 实操考试心里没底怕挂科,这是我去年在漯河帮一个70岁老电工考试时最真实的状态。那天他手抖得厉害,连螺丝刀都拿不稳,但最终还是考过了。为什么?因为他知道【官方报名入口】在哪里,也清楚该… · 2026/11/7 0:31:51

普洱电工证培训机构怎么选?考前押题帮你高效通关
普洱电工证培训机构怎么选?考前押题帮你高效通关

普洱电工证培训机构怎么选?考前押题帮你高效通关 工地太忙根本没时间复习考试,但电工证考试又不能拖,否则影响上岗。现在市面上的【普洱电工证培训机构】太多,很多人不知道怎么选。别急,看完这篇,你就知道怎么高效拿到证书,还能通过【考前押题】轻松过… · 2026/11/7 0:30:50

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?
澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 证书过期了不知道怎么复审延期?别慌,很多人在拿到【澳洲水电工证考试】的电子证书后,一不小心就忽略了复审时间,结果证书失效,工作受阻,甚至被单位追责。今天就从【澳洲水电工证考试… · 2026/11/7 0:00:41

电工作业提示版通过率揭秘:怎么考才能一次过?
电工作业提示版通过率揭秘:怎么考才能一次过?

电工作业提示版通过率揭秘:怎么考才能一次过? 怕考不过白交培训费?别急,今天我就从驻马店应届工程类毕业生的视角,带你全面了解电工作业提示版的考试流程、备考要点和真实通过率,帮你少走弯路、提高一次通过率。… · 2026/11/7 0:00:41

电工证年审报名千万别踩坑 外省证转过来要搞清这几点
电工证年审报名千万别踩坑 外省证转过来要搞清这几点

电工证年审报名千万别踩坑 外省证转过来要搞清这几点 之前考的证在外省能不能转过来?这个问题是很多电工从业者最关心的,特别是像你这样在商丘从事公路工程的人员,经常需要跨省流动,证书的 有效性 和 可迁移性… · 2026/11/7 0:00:41

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码