Необходимо проверить правильно ли закрываются скобки, задачка с литкода. Решил реализовать при помощи стека, алгоритм работает неправильно и выдает False, когда должно быть True. Непонятным магическим образом игнорируя условие
elif stack.get_elem == '(' and brackets[i] == ')':
(Можете проверить в дебаггере проблема именно в этом)
Вопрос следующий: Почему игнорируется условие?
Реализация стека:
class Stack:
def __init__(self):
self.stack = []
def add_elem(self, elem):
self.stack.append(elem)
def rem_elem(self):
try:
return self.stack.pop()
except:
pass
def get_elem(self):
return self.stack[len(self.stack) - 1]
def get_stack(self):
return self.stack
Реализация условия:
from test1 import Stack
def bracket_balance(brackets):
stack = Stack()
for i in range(len(brackets)):
if brackets[i] == '(':
stack.add_elem(brackets[i])
elif stack.get_elem == '(' and brackets[i] == ')':
stack.rem_elem()
elif stack.get_elem == '[' and brackets[i] == ']':
stack.rem_elem()
elif stack.get_elem() == '{' and brackets[i] == '}':
stack.rem_elem()
else:
return False
if stack.get_stack == []:
return True
else:
return False
brackets = '()()()'
print(bracket_balance(brackets))