Balanced brackets solved with recursion

Using recursion to solve a balanced brackets coding challenge in JavaScript

Javier hernandez
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

--

--

Javier hernandez
Javier hernandez

Written by Javier hernandez

Web Designer who codes and knows mechanical engineering | 🏆 Alumni Antler 2022 | Techstars 2020 | Startupbootcamp 2018

No responses yet