checkBrackets
Ответ:
const checkBrackets = (str) =>
!str
.split("")
.reduce(
(acc, curr) =>
!acc
? curr
: "[]{}()".includes(acc.slice(-1)[0] + curr)
? acc.substring(0, acc.length - 1)
: acc + curr,
""
);
Объяснение:
Делаем массив из строки, проходим по нему reduce и, если текущей элемент curr является закрывающей скобкой для последнего acc, возвращаем acc без последнего символа, в ином случае возвращаем acc+curr. Если после выполнения reduce мы получили пустую строку - значит скобки расставлены корректно, если нет - не корректно.
Код для проверки:
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