class Solution:
def isValid(self, s: str) -> bool:
if len(s)%2!=0:
return False
#定义一个哈希map,键为右括号,值为左括号
pairs = {
")":"(",
"]":"[",
"}":"{"
}
#定义一个空列表也可以写作stack=list()
stack = []
#使用for循环遍历字符串中的元素
for ch in s:
#判断当字符串中的元素在pairs哈希表中时
if ch in pairs:
#当字符串中的元素在pairs哈希表中时并且如果stack是空表或者stack列表中的最后一个元素不是pairs中键ch的值,就返回false,否则stack表就执行最后一个元素的删除操作
if not stack or stack[-1]!=pairs[ch]:
return False
else:
stack.pop()
#如果字符串中的元素不在pairs哈希表中,stack列表就执行添加元素操作
else:
stack.append(ch)
#最终返回的结果就会对stack表是否是空为返回时,空时返回true,非空时返回false
return not stack
#s中的第一个元素肯定不在pairs中,因为键都是右括号,可以根据pairs哈希表来判断,当第一次遍历s中的元素时,会执行append操作
力扣算法题:有效的括号-使用哈希表解决
于 2022-04-24 20:04:43 首次发布