题目链接
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
3.每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
解题思路
代码中我们使用了哈希表来判断是否能够形成括号,从而决定进行入栈操作还是出栈操作。
解题代码
class Solution:
def isValid(self, s: str) -> bool:
if len(s) % 2 != 0:
return False
stack = []
dic = {'}': '{', ']': '[', ')': '('}
for s_i in s:
if stack and s_i in dic and stack[-1] == dic[s_i]:
stack.pop()
elif s_i not in dic:
stack.append(s_i)
else:
return False
return len(stack) == 0
参考资料:力扣热题100对应的题解