2025/3/3 【栈与队列】LeetCode 20.有效的括号 【√】

代码随想录

20. 有效的括号 - 力扣(LeetCode)

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
            
复制代码

 

posted @   axuu  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示