Intern
20. Érvényes zárójelek Adott egy s karakterlánc, amely csak '(', ')', '{', '}', '[' és ']' karaktereket tartalmaz, határozza meg, hogy a bemeneti karakterlánc érvényes-e. Egy bemeneti karakterlánc akkor érvényes, ha: 1. A nyitó zárójeleket ugyanazzal a típusú zárójelekkel kell lezárni. 2. A nyitó zárójeleket a helyes sorrendben kell lezárni. 3. Minden zárójelhez tartozik egy megfelelő nyitó zárójel ugyanabból a típusból. Példa 1: Bemenet: s = "()" Kimenet: true Példa 2: Bemenet: s = "()[]{}" Kimenet: true Példa 3: Bemenet: s = "(]" Kimenet: false
sobes.tech MI
Válasz az MI-től
Для проверки валидности строки с скобками удобно использовать стек. Идея:
- Проходим по символам строки.
- Если символ — открывающая скобка, кладём её в стек.
- Если закрывающая — проверяем, что верхний элемент стека соответствует ей по типу.
- Если нет соответствия или стек пуст, строка невалидна.
- В конце стек должен быть пустым.
Пример на Python:
def isValid(s):
stack = []
pairs = {')': '(', '}': '{', ']': '['}
for char in s:
if char in '([{':
stack.append(char)
elif char in ')]}':
if not stack or stack.pop() != pairs[char]:
return False
return not stack
# Примеры
print(isValid("()")) # True
print(isValid("()[]{}")) # True
print(isValid("(]")) # False