Using recursion to solve a balanced brackets coding challenge in JavaScript
2 min readJan 24, 2023
I’m working on a full explanation of this solution, but for now, here’s the solution
The code
function balancedBrackets(string, openArr = []) {
let stack = openArr
let arr = []
if (typeof string === 'string') {
arr = string.split('')
} else {
arr = string
}
if (stack.length === 0 && arr.length === 0) {
return true
}
const char = arr.shift()
if (char === ')' || char === ']' || char === '}') {
if (stack.length === 0) {
return false
} else {
stack.push(char)
stack = check(stack)
}
}
if (char === '(' || char === '[' || char === '{') {
if (arr.length === 0) {
return false
} else {
stack.push(char)
stack = check(stack)
}
}
if (stack === false) {
return false
}
if (stack.length > 0 && arr.length === 0) {
return false
} else if (balancedBrackets(arr, stack)) {
return true
} else {
return false
}
}
const check = (array) => {
const size = array.length
if (size > 1) {
const prev = array[size-2]
const last = array[size-1]
if ((prev === '(' && last === ')') ||
(prev === '[' && last === ']') ||
(prev === '{' && last === '}')) {
return popTwo(array)
} else if (last === ')' || last === ']' || last === '}') {
return false
}
}
return array
}
const popTwo = (array) => {
array.pop()
array.pop()
return array
}
This will return
balancedBrackets('(hello)[world]')
// return true
balancedBrackets('{}')
// true
balancedBrackets('[({}{}{})([])]')
// true
balancedBrackets('(hello')
// false
balancedBrackets('([)]')
// false
balancedBrackets(')(')
// false