checkBrackets
by evgkch
JavaScript
const bracketsDictionary = ['()', '[]', '{}', '01'];
const parseBrackets = brackets => brackets.split('');
const getStartDictBracket = dictBracket => dictBracket.substr(0,1);
const getEndDictBracket = dictBracket => dictBracket.substr(1,2);
const createBracketChecker = bracketsDictionary => brackets => {
let parsedBrackets = parseBrackets(brackets),
stack = [];
for (let bracket of parsedBrackets)
{
let dictBracket = bracketsDictionary.find(el => el.substr(0,1) === bracket || el.substr(1,2) === bracket);
if (dictBracket)
{
let startDictBracket = getStartDictBracket(dictBracket); let endDictBracket = getEndDictBracket(dictBracket);
if (bracket === startDictBracket)
stack.push(bracket);
else if (bracket === endDictBracket)
if (stack[stack.length - 1] === startDictBracket)
stack.pop();
else
return false;
else
return false;
}
};
return stack.length === 0;
};
const checkBrackets = createBracketChecker(bracketsDictionary);
console.log(checkBrackets('0101([01])[]()'));
console.log(checkBrackets('before ( middle []) after '));