一、题目描述:
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
- 示例 1:
- 输入:s = “()”
- 输出:true
- 示例 2:
- 输入:s = “()[]{}”
- 输出:true
- 示例 3:
- 输入:s = “(]”
- 输出:false
- 提示:
- s 仅由括号 ‘()[]{}’ 组成
- 1 ≤ s . l e n g t h ≤ 1 0 4 1 \leq s.length \leq 10^4 1≤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 False
stri = res.pop()
if (stri, ss) not in kv: return False
return True if len(res)==0 else False