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