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