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 }
View Code

 

 

 

posted @ 2014-02-06 05:35  krunning  阅读(107)  评论(0编辑  收藏  举报