Top.Mail.Ru
Ответы

ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ???

Линейные структуры данных. 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')

Аватар пользователя
Профи

Ну так и используй стек)