确定支架是否平衡.没有得到预期的输出


# Stack Data Structure.

我刚开始学习数据结构和算法。在学习了Stack之后,我写了这个算法来寻找括号是否平衡。我不知道为什么我没有得到正确的输出。

class Stack():
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def is_empty(self):
return self.items == []
def peek(self):
if not self.is_empty():
return self.items[-1]

def get_stack(self):
return self.items 

我写了这个is_match函数,它将检查给定的两个值是否相等。

def is_match(a,b):
if a == b :
return True
else:
return False

以下是开始确定给定条形图是否平衡的主要代码。

# DETERMINE IF BRACKETS ARE BALANCED
def is_paren_balanced(paren_string):
s = Stack()
is_balanced = True
index = 0
while index < len(paren_string) and is_balanced:
paren = paren_string[index]
if paren in "([{":
s.push(paren)
else:
if s.is_empty():
is_balanced = False
break
else:
top = s.pop()
if not is_match(top, paren):
is_balanced = False
break
index += 1
if s.is_empty() and is_balanced:
return True
else:
return False

我调用了is_paren_balanced函数,并传递了一些参数来测试我的代码,因为我已经传递了平衡括号,但它仍然以False的形式返回输出。

result = is_paren_balanced("()")
print(result)

is_match函数错误,它应该将每个左括号与相应的右括号匹配。

def is_match(a,b):
if (a == "(" and b == ")") or (a == "[" and b == "]") or (a == "{" and b == "}") :
return True
else:
return False

您可以以更简洁的方式编写if语句,但这会给您一个基本的想法。

最新更新