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:
"((()))", "(()())", "(())()", "()(())", "()()()"
Java:
public class Solution {
public ArrayList<String> generateParenthesis(int n) {
ArrayList<String> list = new ArrayList<String>();
generate("",0,0,list,n);
return list;
}
public void generate(String current, int left, int right,ArrayList<String> list, int n)
{
if(left < right) return;
if(left == n && right == n)
{
list.add(current);
return;
}else if(left==n)
{
generate(current+")",left,right+1,list,n);
return;
}
generate(current+"(",left+1,right,list,n);
generate(current+")",left, right+1,list,n);
return;
}
}