Задача про скобки.



Супер распространенная задача со скрининг-собеседований.



На вход подается строка, состоящая из круглых скобок. Выведите True, если скобки вложены правильно и False, если нет.



Например, если входная строка
(()(())), то ответ должен быть True.

А если ()), то False.



Это базовая задача на алгоритмы и решается она за один проход по строке (O(n)). Идея здесь следующая: нужно завести переменную-стек, которая будет хранить состояние скобки на i-том шаге и в зависимости от состояния принимать решение о том, валидная строка или нет.



Вот видео с более подробным описанием решения.



Вот возможное решение:



def if_balanced(string):

stack = []

for i in string:

if i == "(":

stack.append(i)

elif i == ")":

if not stack:

return False

stack.pop()

if stack:

return False

return True





print(if_balanced("()()())"))



Усложненная форма этой же задачи: на вход подаются строка со скобками разных видов, например, ([]{}) -> True, ({}([]{)}) -> False.



Можете решить ее самостоятельно.