Middle
60
É necessário validar a estrutura SOMENTE para verificar a correção na abertura e fechamento de parênteses. test_data = [ "[][][]", # válido "[[[]]]", # válido "[]", # válido "][[", # inválido "[[]", # inválido "[]]", # inválido "[[]]", # válido "][[]", # inválido "[][]]", # inválido "[]][", # inválido ] def is_valid():
Empresas quando solicitadas
Resposta da IA
sobes.tech IA
Для проверки корректности открытия и закрытия скобок можно использовать простой стек. При проходе по строке:
- Если встречается открывающая скобка
[, кладём её в стек. - Если встречается закрывающая скобка
], проверяем, есть ли в стеке соответствующая открывающая. Если нет — строка некорректна.
В конце стек должен быть пустым, иначе есть незакрытые скобки.
Пример реализации:
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.