Middle
62
Csak a(z) NYITÁS és ZÁRÁS zárójelek helyességét ellenőrizze a szerkezet validálásával. test_data = [ "[][][]", # érvényes "[[[]]]", # érvényes "[]", # érvényes "][[", # érvénytelen "[[]", # érvénytelen "[]]", # érvénytelen "[[]]", # érvényes "][[]", # érvénytelen "[][]]", # érvénytelen "[]][", # érvénytelen ] def is_valid():
Cégeket kérdeztek
Válasz az MI-től
sobes.tech MI
Для проверки корректности открытия и закрытия скобок можно использовать простой стек. При проходе по строке:
- Если встречается открывающая скобка
[, кладём её в стек. - Если встречается закрывающая скобка
], проверяем, есть ли в стеке соответствующая открывающая. Если нет — строка некорректна.
В конце стек должен быть пустым, иначе есть незакрытые скобки.
Пример реализации:
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.