Intern
20. Geldige haakjes Gegeven een string s die alleen de tekens '(', ')', '{', '}', '[' en ']' bevat, bepaal of de invoerstring geldig is. Een invoerstring is geldig als: 1. Open haakjes moeten worden gesloten door hetzelfde type haakjes. 2. Open haakjes moeten in de juiste volgorde worden gesloten. 3. Elke sluithaakje heeft een overeenkomstige open haakje van hetzelfde type. Voorbeeld 1: Invoer: s = "()" Uitvoer: true Voorbeeld 2: Invoer: s = "()[]{}" Uitvoer: true Voorbeeld 3: Invoer: s = "(]" Uitvoer: false
sobes.tech AI
Antwoord van AI
Для проверки валидности строки с скобками удобно использовать стек. Идея:
- Проходим по символам строки.
- Если символ — открывающая скобка, кладём её в стек.
- Если закрывающая — проверяем, что верхний элемент стека соответствует ей по типу.
- Если нет соответствия или стек пуст, строка невалидна.
- В конце стек должен быть пустым.
Пример на 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