我正在解决 Leetcode 上的以下问题:https://leetcode.com/problems/valid-parentheses/submissions/
基本上我们有一个括号列表,并且正在检查它是否“有效”。
示例:
Input: s = "()[]{}"
Output: true
Input: s = "(]"
Output: false
基本上括号需要以正确的顺序关闭。
这是我的代码:
def isValid(s: str) -> bool:
stack = []
open_brackets = ["(", "[", "{"]
for bracket in s:
if bracket in open_brackets:
stack.append(bracket)
else:
if bracket == "]":
if stack.pop() != "[":
return False
elif bracket == ")":
if stack.pop() != "(":
return False
elif bracket == "}":
if stack.pop != "{":
return False
return True
由于某种原因,它没有通过输入测试:s="(]"
;这显然应该返回 False,但它返回 True。
我在代码的末尾打印了堆栈,得到 ["("]
,这意味着 else statement
由于某种原因没有执行。任何想法为什么 - 我已经看过很多次并且无法弄清楚。谢谢
答案 0 :(得分:0)
return True
语句阻止其他代码运行,这意味着它在第一个循环中退出。
取消缩进,您的问题将得到解决。
答案 1 :(得分:0)
取消缩进最后的 return True
以便循环可以遍历输入字符串中的所有字符:
def isValid(s: str) -> bool:
stack = []
open_brackets = ["(", "[", "{"]
for bracket in s:
if bracket in open_brackets:
stack.append(bracket)
else:
if bracket == "]":
if stack.pop() != "[":
return False
elif bracket == ")":
if stack.pop() != "(":
return False
elif bracket == "}":
if stack.pop != "{":
return False
return True