Middle
56
Неопходно је верификовати структуру само да ли је исправно отварање и затварање заграда. test_data = [ "[][][]", # валидно "[[[]]]", # валидно "[]", # валидно "][[", # невалидно "[[]", # невалидно "[]]", # невалидно "[[]]", # валидно "][[]", # невалидно "[][]]", # невалидно "[]][", # невалидно ] def is_valid():
Компаније где су питане
Одговор од АИ
sobes.tech АИ
Для проверки корректности открытия и закрытия скобок можно использовать простой стек. При проходе по строке:
- Если встречается открывающая скобка
[, кладём её в стек. - Если встречается закрывающая скобка
], проверяем, есть ли в стеке соответствующая открывающая. Если нет — строка некорректна.
В конце стек должен быть пустым, иначе есть незакрытые скобки.
Пример реализации:
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.