Leetcode提交有效括号问题

时间:2019-12-02 13:12:25

标签: python-3.x

我正在尝试解决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

1 个答案:

答案 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