Generate Parentheses

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

For example, given n = 3, a solution set is:

[ "((()))", "(()())", "(())()", "()(())", "()()()" ]

Solution

public class Solution {
    public ArrayList<String> generateParenthesis(int n) {

        ArrayList<String> result = new ArrayList<String>();
        if(n <= 0) return result;

        generate(result, "", 0, 0, n);
        return result;
    }


    public void generate(ArrayList<String> result, String temp, int lp, int rp, int n){
        if(lp == n){
            for(int i = rp; i < n; i ++)
                temp += ')';

            result.add(temp);
            return;
        }

        generate(result, temp + '(', lp + 1, rp, n);

        if (lp > rp)
            generate(result, temp + ')', lp, rp + 1, n);
    }
}

results matching ""

    No results matching ""