LeetCode:有效的括号

题目

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

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

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

示例 1:

输入: "()"
输出: true

示例 2:

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

示例 3:

输入: "(]"
输出: false

示例 4:

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

示例 5:

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

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses

题解

运用栈的概念,先入后出。后进的左括号最先删除,最后判断栈的长度和某些特殊情况(如只有一个右括号的情况)。

class Solution:
    def isValid(self, s: str) -> bool:
        
        if s=="":
            return True
        
        temp = []
        for st in s:

            if st == "(" or st=='{' or st=='[':
                temp.append(st)
            else:
                
                if not temp: return False

                if st==')' and temp[-1]=='(':
                    temp.pop(-1)
                elif st=='}' and temp[-1]=='{':
                    temp.pop(-1)
                elif st==']' and temp[-1]=='[':
                    temp.pop(-1)
                else:
                    return False
        
        if len(temp)==0:
            return True
        else:
            return False