JS.16 · Строки
Задача
Определить, правильно ли расставлены скобки трёх видов.
Алгоритм
Открывающие скобки кладутся в массив-стек, закрывающая должна совпасть с вершиной.
Исходный код
⇩ Скачать 16-proverka-skobok.js
// Проверка баланса скобок
function balanced(s) {
const st = [], pair = { ')': '(', ']': '[', '}': '{' };
for (const c of s) {
if ('([{'.includes(c)) st.push(c);
else if (c in pair) { if (st.pop() !== pair[c]) return false; }
}
return st.length === 0;
}
console.log('(a[b]{c}) ->', balanced('(a[b]{c})'));
console.log('(a] ->', balanced('(a]'));
Пояснения
Объект pair сопоставляет закрывающую скобку с ожидаемой открывающей.