【leetcode】20. 有效的括号

文章目录

题目

20. 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

题解

使用栈

python 复制代码
class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        # 栈: "(", "{", "[", ")", "}", "]"
        stack = []
        mapping = {
            '(': ')',
            '[': ']',
            '{': '}'
            }
        for item in s:
            if item in mapping.keys():
                stack.append(mapping[item])
            # 按照顺序读取的,使用 if not stack 来判断栈是否为空
            elif not stack or stack[-1] != item:
                return False
            else:
                stack.pop()
        return True if not stack else False


        
相关推荐
wqqqianqian3 分钟前
国产linux系统(银河麒麟,统信uos)使用 PageOffice在线编辑word文件保存数据同时保存文件
linux·word·信创·国产·保存·pageoffice·在线编辑
心之语歌15 分钟前
ubuntu24.04 搭建 java 环境服务,以及mysql数据库
linux·ubuntu
愚润求学35 分钟前
【Linux】POSIX信号量
linux·运维
kaiaaaa36 分钟前
算法训练第八天
算法
LL_xjbt40 分钟前
代码随想录刷题day29
算法·leetcode·动态规划
进阶的DW1 小时前
新手小白使用VMware创建虚拟机安装Linux
java·linux·运维
jz_ddk1 小时前
[zynq] Zynq Linux 环境下 AXI BRAM 控制器驱动方法详解(代码示例)
linux·运维·c语言·网络·嵌入式硬件
叶子2024221 小时前
守护进程实验——autoDL
人工智能·算法·机器学习
深思慎考1 小时前
Linux网络——socket网络通信udp
linux·网络·udp
半桔1 小时前
【算法深练】分组循环:“分”出条理,化繁为简
数据结构·c++·算法·leetcode·面试·职场和发展