zoukankan      html  css  js  c++  java
  • 【Leetcode栈】有效的括号(20)

    题目

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

    有效字符串需满足:

    1,左括号必须用相同类型的右括号闭合。
    2,左括号必须以正确的顺序闭合。

    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true
    

    示例 2:

    输入: "()[]{}"
    输出: true
    

    示例 3:

    输入: "(]"
    输出: false
    

    示例 4:

    输入: "([)]"
    输出: false
    

    示例 5:

    输入: "{[]}"
    输出: true
    

    解答

    思路:

    • 用栈。遇到左括号入栈,右括号就与栈顶匹配,如果字符串是有效括号,那么所有字符匹配完后栈为空。

    通过代码如下:

    class Solution:
        def isValid(self, s: str) -> bool:
            l = []
            d = {'[':']', '{':'}', '(':')'}
    
            for x in s:
                if x in d.keys():
                    l.append(x)
                else:
                    if len(l)==0 or x!=d[l.pop()]:
                        return False
            return len(l) == 0
        
    
  • 相关阅读:
    HAOI2018 奇怪的背包
    HAOI2018 苹果树
    骑士游戏
    飞飞侠
    奶牛排队
    寻找道路
    [USACO08JAN]牛大赛Cow Contest
    灾后重建
    [USACO09DEC]牛收费路径Cow Toll Paths
    萌萌哒
  • 原文地址:https://www.cnblogs.com/ldy-miss/p/11981279.html
Copyright © 2011-2022 走看看