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