Answer

Answer

t.me/js_test

Ответ:

const checkBrackets = (str) =>
  !str
    .split("")
    .reduce(
      (acc, curr) =>
        !acc
          ? curr
          : "[]{}()".includes(acc.slice(-1)[0] + curr)
          ? acc.substring(0, acc.length - 1)
          : acc + curr,
      ""
    );

Обьяснение:

Делаем массив из строки, проходим редьюсом по нему и если текущей элемент curr является закрывающей скобкой для последнего acc - возвращаем acc без последнего символа, в ином случае возвращаем acc+curr. Если после выполнения редьюса мы получили пустую строку - значит скобки расставлены корректно, если нет - значит не корректно.

Код для проверки:

const tests = ["(())(){[}]", "{}", "[({})[", "({[]})", ""];

const checkBrackets = (str) =>
  !str
    .split("")
    .reduce(
      (acc, curr) =>
        !acc
          ? curr
          : "[]{}()".includes(acc.slice(-1)[0] + curr)
          ? acc.substring(0, acc.length - 1)
          : acc + curr,
      ""
    );

console.log(checkBrackets(tests[0])); // false
console.log("---");
console.log(checkBrackets(tests[1])); // true
console.log("---");
console.log(checkBrackets(tests[2])); // false
console.log("---");
console.log(checkBrackets(tests[3])); // true
console.log("---");
console.log(checkBrackets(tests[4])); // true



Report Page