20-有效的括号

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

有效字符串需满足:

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

示例

示例 1:

输入: "()"
输出: true
示例 2:

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

输入: "(]"
输出: false
示例 4:

输入: "([)]"
输出: false
示例 5:

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

解法

核心思想:利用栈的先进后出的特性

class Solution:
def isValid(self, s: str) -> bool:
dic = {'{': '}', '[': ']', '(': ')'}
stack_ = []
for c in s:
try: # 异常处理
if c in dic:
stack_.append(c)
elif dic[stack_.pop()] != c:
return False
# 空栈进行pop()会返回IndexError
except IndexError:
return False
return len(stack_) == 0

来源

LeetCode中该题地址,Click here!

-------------本文结束感谢您的阅读-------------