JSFiddle - React, Tailwind, and code Playground

by sperske

JavaScript

function allBalancedStrings(n, parens = ['(', ')']) {
  if (n === 0) return new Set([''])
  const result = new Set()

  for (let i = 0; i < n; i++) {
    for (const s1 of allBalancedStrings(i, parens)) {
      for (const s2 of allBalancedStrings(n - i - 1, parens)) {
        result.add(`${parens[0]}${s1}${parens[1]}${s2}`)
      }
    }
  }
  return result
}

for (let i = 1; i < 16; i++) {
  const start = Date.now()
  const data = [...allBalancedStrings(i)]
  const end = Date.now()
  console.log(`n=${i} calualted in ${end-start}ms`)

}