【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


        
相关推荐
Yzzz-F5 分钟前
Problem - 2194E - Codeforces
算法
像污秽一样5 分钟前
算法设计与分析-习题12.2
算法·迭代改进·分支界限
x_xbx12 分钟前
LeetCode:83. 删除排序链表中的重复元素
算法·leetcode·链表
BestOrNothing_201518 分钟前
(3)Ubuntu 22.04 双系统安装全过程记录
linux·ubuntu22.04·双系统安装
_小草鱼_32 分钟前
【搜索与图论】DFS算法(深度优先搜索)
算法·深度优先·图论·回溯·递归
I_LPL1 小时前
hot100 栈专题
算法·
2401_879503411 小时前
C++中的观察者模式变体
开发语言·c++·算法
阿贵---2 小时前
C++中的备忘录模式
开发语言·c++·算法
寂柒2 小时前
Linux——基础IO
linux
setmoon2142 小时前
C++中的观察者模式实战
开发语言·c++·算法