Вопрос проверяет понимание алгоритмов работы со стеком и умение решать задачу балансировки скобок за один проход.
Задача проверки скобок заключается в том, чтобы определить, правильно ли расставлены скобки в строке. Классическое решение использует структуру данных стек, которая работает по принципу LIFO (последним пришёл — первым вышел). Это позволяет проверить баланс за один проход по строке, что даёт временную сложность O(n) и пространственную O(n) в худшем случае.
Алгоритм проходит по каждому символу строки:
После обработки всех символов стек должен быть пустым, иначе скобки не сбалансированы.
function isValid(s) {
const stack = [];
const map = { ')': '(', '}': '{', ']': '[' };
for (let char of s) {
if (char === '(' || char === '{' || char === '[') {
stack.push(char);
} else {
if (stack.length === 0 || stack.pop() !== map[char]) {
return false;
}
}
}
return stack.length === 0;
}Этот алгоритм широко используется в компиляторах, интерпретаторах и редакторах кода для проверки синтаксической корректности. Также он является базовым для понимания работы стека и часто встречается на собеседованиях.
Вывод: Используйте стек для проверки скобок, когда требуется линейное время и простота реализации. Этот подход оптимален для большинства случаев и легко адаптируется под разные типы скобок.
Уровень
Рейтинг:
5
Сложность:
3
Навыки
JavaScript
Networks
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию