我正在尝试解决leetcode问题:20. Valid Parentheses
编写代码后,我测试了几次,每次代码都能正常工作。但是提交后,我收到关于“ {[]}”情况的错误答案通知。它说我的代码输出为假,尽管预期输出为真。然后,我再次使用该输入测试代码,并得到正确的输出。然后,我在leetcode上使用“操场调试”测试了代码,并再次得到了正确的输出。我不明白为什么我的代码在测试用例中可以运行,但是提交后却无法运行...
我的代码是用python编写的,代码如下:
stackArray = []
par = {')': '(', '}': '{', ']':'[',}
def stackPush(p):
stackArray.append(p)
def stackPop(p):
if (stackArray[len(stackArray)-1] == par[p]):
stackArray.pop()
return True
else:
return False
class Solution:
def isValid(self, s: str) -> bool:
if (len(s) == 0):
return True
push = ['(', '{', '[']
pop = [')', '}', ']']
for i in s:
if i in push:
stackPush(i)
elif i in pop:
status = stackPop(i)
if status == False:
return False
if (len(stackArray)==0):
return True
return False
答案 0 :(得分:0)
您需要初始化Leetcode测试的每个变量。因为Leetcode将对您的方法运行很多测试,并且如果您的变量是全局变量且尚未初始化,则可能有问题。
在您的代码中,stackArray不是下一个测试用例的空数组。因此,您运行每个测试用例,它将通过。但是,当您提交并运行多个测试用例时,结果将是错误的。
现在,密码已通过。
stackArray = []
par = {')': '(', '}': '{', ']':'[',}
def stackPush(p):
stackArray.append(p)
def stackPop(p):
if(len(stackArray) == 0):
return False
if (stackArray[len(stackArray)-1] == par[p]):
stackArray.pop()
return True
else:
return False
class Solution:
def isValid(self, s):
while(len(stackArray) > 0):
stackArray.pop()
if (len(s) == 0):
return True
push = ['(', '{', '[']
pop = [')', '}', ']']
for i in s:
if i in push:
stackPush(i)
elif i in pop:
status = stackPop(i)
if status == False:
return False
if (len(stackArray)==0):
return True
return False