Leetcode 20 有效括号

题目:

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

本题考察栈的使用:

  1. 遍历字符串
  • 将左括号压栈;
  • 碰到右括号如果和队尾的左括号匹配则出栈,如果不匹配或者栈空则返回False。
  1. 遍历结束,栈空返回True,否则False。

Tricks

  1. 在栈中先保存一个None,防止使用pop函数的时候出现异常。
  2. 使用dict保存括号的匹配,可以减少代码量。
class Solution:
    def isValid(self, s: str) -> bool:
        array = [None]
        pardic = {
            '}': '{',
            ']': '[',
            ')': '('
        }
        
        for c in s:
            if c in pardic:
                if pardic[c] != array.pop():
                    return False
            else:
                array.append(c)
        
        return len(array) == 1

你可能感兴趣的:(Leetcode 20 有效括号)