此题用到栈先进后出的特点进行求解,求解思路可参考下列链接,十分巧妙:
官方求解思路
class Solution:
def isValid(self, s: str) -> bool:
_dict = {'{':'}', '[':']', '(':')'} # 创建hash表,表示左右括号的对应关系
stack = []
for char in s:
# 当栈非空,且栈顶元素为左括号,且char为栈顶元素对应的右括号时,删除栈顶元素
if stack and stack[-1] in _dict.keys() and char == _dict[stack[-1]]:
# _dict.key 以列表形式返回一个字典所有的键:{, [, (
stack.pop()
# 否则将char添加到栈顶
else:
stack.append(char)
return not stack