Brackets matching

Say if string contains all matching brackets

by Alex Myronov

JavaScript

const matches = (bracket1, bracket2) =>
	(bracket1 === '{' && bracket2 === '}') ||
  (bracket1 === '(' && bracket2 === ')') ||
  (bracket1 === '[' && bracket2 === ']')

const bracketsOk = (str) => {
	const symbols = str.replace(/\s/g, '').split('')
  const stack = []
  
	for(let i = 0; i < symbols.length; i++) {
  	const curr = symbols[i]
    const last = stack[stack.length - 1]
    
    if (matches(last, curr)) {
    	stack.pop()
    } else {
    	stack.push(curr)
    }
  }
  
  return !stack.length
}

console.log(bracketsOk("{ [ ] ( ) }")) // "{ [ ] ( ) }" should return True
console.log(bracketsOk("{ [ ( ] ) }")) // "{ [ ( ] ) }" should return False
console.log(bracketsOk("{ [ }")) // "{ [ }" should return False