思路:本题括号排序特点和刚好与出入栈特点类似,因此考虑用出入栈来解决这个问题
- 判断字符串s是否为空,若为空返回F。
- 判断字符串的Length是否为奇数,若为奇数返回F。
- 建立字典,将左括号(’(’ , ‘[’ , ‘{’)设置为key,右括号(’)’ , ‘]’ , ‘}’)设置为value,一一对应。
- 如果字符a是左括号,则入栈,否则通过字典判断括号对应关系,若栈顶出栈括号与当前遍历括号不对应,则直接返回F。
代码:
class Solution:
def isValid(self, s: str) -> bool:
if len(s)%2 != 0:
return False
if s is None:
return False
dic = {'{': '}', '[': ']', '(': ')'} #建立字典
stack = [' '] #初始化栈
for i in s:
if i in dic: #判断i是否为左括号
stack.append(i) #入栈
elif dic[stack.pop()] != i: #栈顶出栈括号与当前遍历括号不对应
return False
return len(stack) == 1