Используйте стек: открывающие скобки добавляются, каждая закрывающая должна совпасть с последней открывающей.
Напишите функцию, которая проверяет корректность строки из круглых, квадратных и фигурных скобок: каждой открывающей должна соответствовать закрывающая, а вложенность не должна нарушаться.
Используйте стек: открывающие скобки добавляются, каждая закрывающая должна совпасть с последней открывающей.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Используйте стек: открывающие скобки добавляются, каждая закрывающая должна совпасть с последней открывающей.
В этом варианте допускаются только скобки, любой другой символ считается ошибкой, пустая строка корректна.
function validBrackets(text) {
const pairs = new Map([[')', '('], [']', '['], ['}', '{']]);
const stack = [];
for (const ch of text) {
if ('([{'.includes(ch)) stack.push(ch);
else if (!pairs.has(ch) || stack.pop() !== pairs.get(ch)) return false;
}
return stack.length === 0;
}
Время O(n), память O(n) в худшем случае. Простого равенства количества скобок недостаточно: строка ([)] нарушает порядок вложенности.