Leetcode #22 Generate Parentheses

Leetcode #22 Generate Parentheses

Difficulty: Medium

We can use a backtracking/recursive approach to solve this.

  • If parenthesis is balanced, we can store it in the result array
  • We start by adding left side parenthesis
  • If right side is less than left, it will add to right side to balance it
/**
 * @param {number} n
 * @return {string[]}
 */
var generateParenthesis = function(n) {
    let string = "";
    let ret = [];

    let generate = (string, left, right) => {
        if(left == n && right == n){
            console.log(string)
            ret.push(string)
            return;
        }
        if(left < n){
            string = string + "("
            generate(string, left+1, right)
            string = string.slice(0,-1)
        }
        if(right < left){
            string = string + ")"
            generate(string, left, right+1)

        }

    }

    generate(string, 0, 0)
    return ret;
};