Generate Parentheses

Problem Description

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

 

Example 1:

Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]

Example 2:

Input: n = 1
Output: ["()"]

 

Constraints:

Solution (JavaScript)

/**
 * @param {number} n
 * @return {string[]}
 */
var generateParenthesis = function(n) {
    let ans = [];
    function backtrack(s = '', left = 0, right = 0) {
        if(s.length === 2 * n) {
            ans.push(s);
            return;
        }
        if(left < n)
            backtrack(s+'(', left+1, right);
        if(right < left)
            backtrack(s+')', left, right+1);
    }
    backtrack();
    return ans;
};