
思路
通过栈去模拟,如果是遇到左括号,右括号进栈,如果当前栈一直为空或者当前元素与栈顶元素不相同,则说明不是有效的括号,直接返回False,然后如果当前元素和栈顶元素匹配,则将栈内的元素弹出。最后如果栈为空,说明是有效的括号,反则不是
python
class Solution:
def isValid(self, s: str) -> bool:
stack=[]
for i in range(len(s)):
if s[i]=='(':
stack.append(')') #右括号进栈
elif s[i]=='{':
stack.append('}')
elif s[i]=='[':
stack.append(']')
elif len(stack)==0 or s[i]!=stack[-1]:#短路效应,需要先写前一个,不然可能遇到空栈操作
return False
else:
stack.pop()
if len(stack)==0:
return True
else:
return False