ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ???
Линейные структуры данных. Python
Правильная скобочная последовательность
Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа должна определить, является ли данная скобочная последовательность правильной.
Пустая последовательность является правильной. Если A правильная, то последовательности (A), [A], {A} правильные. Если A и B правильные последовательности, то последовательность AB правильная.
Входные данные
В единственной строке записана скобочная последовательность, содержащая не более 100000 скобок.
Выходные данные
Если данная скобочная последовательность правильная, то программа должна вывести строку yes, иначе — строку no.
Примеры
Ввод
Вывод
([])
yes
{)
no
input_string = input()
input_string.find('[]')!=-1
while input_string.find('[]')!=-1 or input_string.find('()')!=-1 or input_string.find(' { } ')!=-1:
____input_string = input_string.replace('[]','').replace('()','').replace(' { } ','')
if input_string == '':
____print('yes')
else:
____print('no')
Не проходит, слишком долго и нужно использовать СТЕК
def is_correct(seq):
brackets = {')': '(', ']': '[', '}': '{'}
stack = []
for i in seq:
if i in brackets:
if len(stack) == 0 or brackets[i] != stack[-1]:
return False
else:
stack.pop()
else:
stack.append(i)
return len(stack) == 0
print('yes' if is_correct(input()) else 'no')
Ну так и используй стек)