心路历程:
看到括号问题直接想到栈,但是纠结了一下题目中给出的 '2. 左括号必须以正确的顺序闭合' 这一约束,其实这句话的意思简化了题目要求,'[(])'这样的字符串就不满足要求了。
注意的点:
1、注意最后需要栈为空的时候才能返回true,否则代表左括号可能会多余。
解法:栈
python
class Solution:
def isValid(self, s: str) -> bool:
# 栈
from collections import deque
stack = deque([])
lefts, rights = ['(', '[', '{'], [')', ']', '}']
mappings_right = {')':'(', ']':'[', '}':'{'}
for c in s:
if c in lefts:
stack.append(c)
else:
if len(stack) == 0: return False
if stack.pop() != mappings_right[c]: return False
if len(stack) == 0: return True
else: return False