一、题目描述:
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
- 示例 1:
- 输入:s = “()”
- 输出:true
- 示例 2:
- 输入:s = “()[]{}”
- 输出:true
- 示例 3:
- 输入:s = “(]”
- 输出:false
- 提示:
- s 仅由括号 ‘()[]{}’ 组成
- 1≤s.length≤1041 \leq s.length \leq 10^41≤s.length≤104
二、解决思路和代码
1. 解决思路
- 分析:利用栈的后进先出的特点判断一下即可
2. 代码
class Solution:def isValid(self, s: str) -> bool:kv = [('(',')'), ('[',']'), ('{','}')]res = []for ss in s:if ss in ('(', '[', '{'):res.append(ss)else:if len(res)==0: return Falsestri = res.pop()if (stri, ss) not in kv: return Falsereturn True if len(res)==0 else False