题目描述:
思路:只需要判断当前括号是否与栈中的栈顶元素,当前括号如果是左括号直接放入,如果是右括号,如果不匹配则一定出错,如果匹配则只需要将匹配好的括号出栈,检查下一个元素即可。
代码如下:
class Solution:
def isValid(self, s: str) -> bool:
pstack = ["x"]
for i in range(len(s)):
if s[i] == ")" and pstack[-1] == "(":
pstack.pop()
elif s[i] == ")" and pstack[-1] != "(":
return False
elif s[i] == "]" and pstack[-1] == "[":
pstack.pop()
elif s[i] == "]" and pstack[-1] != "[":
return False
elif s[i] == "}" and pstack[-1] == "{":
pstack.pop()
elif s[i] == "}" and pstack[-1] != "{":
return False
else:
pstack.append(s[i])
return True if len(pstack)==1 else False
结果如下:
看了看代码,总觉得非常臃肿,于是改了一下,用字典存储了一下,不需要一个个写判断了,代码如下:
class Solution:
def isValid(self, s: str) -> bool:
mydict = {")":"(","]":"[","}":"{"}
pstack = ["x"]
for i in range(len(s)):
if s[i] in mydict:
if pstack[-1] == mydict[s[i]]:
pstack.pop()
else:
return False
else:
pstack.append(s[i])
return True if len(pstack)==1 else False
结果如下所示:
- THE END -
最后修改:2022年8月16日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://wangyuanzhuo.top/t20-%e6%9c%89%e6%95%88%e7%9a%84%e6%8b%ac%e5%8f%b7/