我已经实现了一个堆栈,并创建了一个功能平衡检查,该功能检查了给定的字符串前后的括号,并检查是否平衡。例如,“([]]”是平衡的,而“ [[]]”则不是平衡的。 我的堆栈实现的代码是:
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的列表运行函数时,它运行良好,但是当我使用自己的堆栈时,它将给出错误的输出。