Необходимо провалидировать структуру ТОЛЬКО на корректность открытия и закрытия скобок.

Для проверки корректности открытия и закрытия скобок можно использовать простой стек. При проходе по строке:

Короткий ответ

Что ответить на собеседовании

Для проверки корректности открытия и закрытия скобок можно использовать простой стек. При проходе по строке:

Подробный разбор

Ответ с пояснениями

Условие

Необходимо провалидировать структуру ТОЛЬКО на корректность открытия и закрытия скобок.

test_data = [ "[][[]]", # valid "[[[]]]", # valid "[][][]", # valid "]]][[", # invalid "[[[]", # invalid "[]]", # invalid "[[]]", # invalid "][]]", # invalid "[]][[]", # invalid "[][[]", # invalid ]

def is_valid(value: str):

Ответ

Для проверки корректности открытия и закрытия скобок можно использовать простой стек. При проходе по строке:

  • Если встречается открывающая скобка [, кладём её в стек.
  • Если встречается закрывающая скобка ], проверяем, есть ли в стеке соответствующая открывающая. Если нет — строка некорректна.

В конце стек должен быть пустым, иначе есть незакрытые скобки.

Пример реализации:

def is_valid(s: str) -> bool:
    stack = []
    for char in s:
        if char == '[':
            stack.append(char)
        elif char == ']':
            if not stack:
                return False
            stack.pop()
    return len(stack) == 0

# Проверка тестовых данных

test_data = [
    "[][][]",  # valid
    "[[[]]]",  # valid
    "[]",      # valid
    "][[",     # invalid
    "[[]",     # invalid
    "[]]",     # invalid
    "[[]]",    # valid
    "][[]",    # invalid
    "[][]]",   # invalid
    "[]][",    # invalid
]

for s in test_data:
    print(f"{s}: {is_valid(s)}")

Обратите внимание, что в исходном списке "[[]]" помечен как invalid, но по логике скобки там корректно открыты и закрыты, значит это valid.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее