2025/3/3 【栈与队列】LeetCode 20.有效的括号 【√】
My method:用两个栈解决
class Solution: def isValid(self, s: str) -> bool: stack = [] for char in s: stack.append(char) n = len(stack) if(n % 2 != 0): return False temp = [] for i in range(n): char = stack.pop() if char == ')': temp.append('(') elif char == '}': temp.append('{') elif char == ']': temp.append('[') elif char == '(': if not temp or temp.pop() != char: return False elif char == '{': if not temp or temp.pop() != char: return False elif char == '[': if not temp or temp.pop() != char: return False return not temp
方法2:只用一个栈解决
从前到后遍历字符串
class Solution: def isValid(self, s: str) -> bool: stack = [] for item in s: if item == '(': stack.append(')') elif item == '[': stack.append(']') elif item == '{': stack.append('}') elif not stack or stack[-1] != item: return False else: stack.pop() return True if not stack else False
方法3:使用字典+栈
写这个方法只是为了熟悉字典的操作。括号匹配是使用栈解决的经典问题。
class Solution: def isValid(self, s: str) -> bool: stack = [] mapping = { '(': ')', '[': ']', '{': '}' } for item in s: if item in mapping.keys(): stack.append(mapping[item]) elif not stack or stack[-1] != item: return False else: stack.pop() return True if not stack else False
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架