6. Balanced Parentheses - Решение

Здравейте,

Гледам, че в Пайтън курса никой не е питал за задачата Balanced Parentheses от темата Стекове и Опашки. Дори и да е тривиална виждам, че все пак има много въпроси. Оставям тук решението ми, което работи само с един стек, който се използва за проследяване на отварящи и затварящи скоби. Като валидацията използва стрингове и скобите запазени като няколко листа.

Решението дава 100 точки.

text = input()
stack = []

for i in range(len(text)):
    if text[i] == "(" or text[i] == "[" or text[i] == "{":
        stack.append(text[i])
    elif text[i] == ")" or text[i] == "]" or text[i] == "}":
        stack.append(text[i])

    if stack[-2:] == ['(', ')'] or stack[-2:] == ['[', ']'] or stack[-2:] == ['{', '}']:
        stack.pop(), stack.pop()

if len(stack) == 0:
    print('YES')
else:
    print('NO')