这个题我一年前就AC了,写一下思路和算法。
其实就是一个FILO后进先出栈,右括号匹配前一个入栈的左括号
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
核心代码:
if c in m:
pars.append(m[c])
else:
if pars==[] or not pars.pop(-1) == c :
return False
对于空字符串单独处理
if s == "":
return True
对于"]"
这种单个右括号的情况单独处理,防止对空栈进行.pop(-1)操作
if pars==[] :
return False
完整代码
class Solution:
def isValid(self, s: str) -> bool:
if s == "":
return True
m={'(':')','{':'}','[':']'}
pars=[]
for c in s:
if c in m:
pars.append(m[c])
else:
if pars==[] or not pars.pop(-1) == c :
return False
if pars==[]:
return True
else:
return False

网友评论