
这道题就是栈这种数据结构的应用,当我们遇到左括号的时候,比如{,(,[,就压栈,当遇到右括号的时候,比如},),],就把栈顶元素弹出,如果不匹配,则返回False,当遍历完所有元素后,栈中仍然有元素,则证明不匹配,也返回False,注意到有效字符串的长度一定为偶数,因此如果字符串的长度为奇数,我们可以直接返回 False,省去后续的遍历判断过程
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
if len(s) % 2 == 1:
return False
stack = []
for kh in s:
if kh in {'{', '(', '['}:
stack.append(kh)
if kh in {'}', ')', ']'}:
if len(stack) < 1:
return False
p = stack.pop()
if kh == '}' and p != '{':
return False
if kh == ')' and p != '(':
return False
if kh == ']' and p != '[':
return False
if len(stack) != 0:
return False
return True








![[SWPUCTF 2022 新生赛]ez_1zpop(php反序列化之pop链构造)](https://img-blog.csdnimg.cn/direct/874095244d57482b9cf038e8eab5a03e.png)




![【YOLOv8改进[CONV]】使用MSBlock二次创新C2f模块实现轻量化 + 含全部代码和详细修改方式 + 手撕结构图 + 轻量化 + 涨点](https://img-blog.csdnimg.cn/direct/8d649bf7673c4feb8ee5a9aecf11c909.png)






