【LeetCode】20. 有效的括号

1 问题

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = “()”
输出:true

示例 2:

输入:s = “()[]{}”
输出:true

示例 3:

输入:s = “(]”
输出:false

2 答案

自己写的不对

class Solution:
    def isValid(self, s: str) -> bool:
        if '()' in s:
            return True
        elif '[]' in s:
            return True
        elif '{}' in s:
            return True
        else:
            return False

官方解:
利用栈,栈先入后出

class Solution:
    def isValid(self, s: str) -> bool:
        dic = {'{': '}',  '[': ']', '(': ')', '?': '?'}
        stack = ['?']  # 防止pop()空值,报错,栈也用列表表示
        for c in s:
            if c in dic: stack.append(c)
            elif dic[stack.pop()] != c: return False 
        return len(stack) == 1

你可能感兴趣的:(Python,LeetCode,leetcode,算法)