Intern
20. Paranteze valide Dat fiind un șir s care conține doar caracterele '(', ')', '{', '}', '[' și ']', determină dacă șirul de intrare este valid. Un șir de intrare este valid dacă: 1. Parantezele deschise trebuie închise de același tip de paranteze. 2. Parantezele deschise trebuie închise în ordinea corectă. 3. Fiecare paranteză de închidere are o paranteză de deschidere corespunzătoare de același tip. Exemplul 1: Intrare: s = "()" Ieșire: true Exemplul 2: Intrare: s = "()[]{}" Ieșire: true Exemplul 3: Intrare: s = "(]" Ieșire: false
sobes.tech AI
Răspuns de la 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