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:
"((()))", "(()())", "(())()", "()(())", "()()()"
1 public class Solution { 2 public ArrayList<String> generateParenthesis(int n) { 3 ArrayList<String> res = new ArrayList<String>(); 4 StringBuilder sb = new StringBuilder(); 5 DFS(n,n,sb,res); 6 return res; 7 } 8 public void DFS(int leftRem,int rightRem,StringBuilder sb,ArrayList<String> res){ 9 if(leftRem==0 && rightRem==0){ 10 res.add(sb.toString()); 11 return; 12 } 13 if(leftRem>0){ 14 sb.append('('); 15 DFS(leftRem-1,rightRem,sb,res); 16 sb.deleteCharAt(sb.length()-1); 17 } 18 if(rightRem>leftRem){ 19 sb.append(')'); 20 DFS(leftRem,rightRem-1,sb,res); 21 sb.deleteCharAt(sb.length()-1); 22 } 23 } 24 }