JSFiddle - React, Tailwind, and code Playground

by krustnic

JavaScript

const CLOSING_MAP = {
	'}': '{',
  ']': '[',
  ')': '('
}

function isStart(char) {
	return !(char in CLOSING_MAP)
}

function isBrackets(char) {
	if (Object.keys(CLOSING_MAP).indexOf(char) === -1 && Object.values(CLOSING_MAP).indexOf(char) === -1 ) {
  	return false
  }
  return true
}

function check(s) {
	const stack = []
    
  for(let i=0; i<s.length; i++) {
  	const char = s[i]
    
    if (!isBrackets(char)) continue
    
    if (isStart(char)) {
    	stack.push(char);
    } else {
    	if (stack.length !== 0 && stack[stack.length - 1] === CLOSING_MAP[char]) {
      	stack.pop()
      }
      else {
      	return false
      }
    }
  }
    
  return stack.length === 0
}

console.log(check("{asd(asd)asd}[]")) // true
console.log(check("{[asd}asd]asd")) // false