我的函数无法在我自己的Python堆栈实现中工作

时间:2018-08-17 13:12:13

标签: stack python-3.6

我已经实现了一个堆栈,并创建了一个功能平衡检查,该功能检查了给定的字符串前后的括号,并检查是否平衡。例如,“([]]”是平衡的,而“ [[]]”则不是平衡的。 我的堆栈实现的代码是:

class Stack(object):

    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def push(self,item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items) - 1]

    def size(self):
        return len(self.items)

balance_check函数的代码为:

def balance_check1(s):

    if len(s) % 2 != 0:
        return False

    opening = set("([{")

    matching = ([("( "," )"),("[","]"),("{","}")])

    stack = Stack()

    for paren in s:

        if paren in opening:
            stack.push(paren)

        else:

            if stack.size() == 0:
                return False

            last_open = stack.pop()

            if (last_open,paren) not in matching:
                return False

    return stack.size() == 0

当我使用Python的列表运行函数时,它运行良好,但是当我使用自己的堆栈时,它将给出错误的输出。

0 个答案:

没有答案