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 '));