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:"((()))", "(()())", "(())()", "()(())", "()()()"
public class Solution { public ArrayList<String> generateParenthesis(int n) { ArrayList<String> list = new ArrayList<String>(); char[] array = new char[n+n]; gp(list,n,0,0,array); return list; } public void gp(ArrayList<String> list,int n,int left,int right,char[] array){ if(left == right && right == n){ list.add(new String(array)); return; } if(left<n){ array[left+right] = '('; gp(list,n,left+1,right,array); } if(right<left){//right less than left is good enough array[left+right] = ')'; gp(list,n,left,right+1,array); } } }