AFON // радиотехник affonya@mail.ru
← Все проекты JavaScript

Проверка скобок

Проверка баланса скобок через стек.

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 сопоставляет закрывающую скобку с ожидаемой открывающей.