题目: Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
大意是:给定n对圆括号,要求将所有合法的圆括号序列找出来
/*
解题思路:采用递归,当左括号的个数小于n的时候,就产生一个左括号,当右括号个数小于左括号的个数就产生右括号
*/
public List<String> generateParenthesis(int n) {
ArrayList<String> result=new ArrayList<String>();
if(n==0){
return result;
}
StringBuilder sb=new StringBuilder();
gen(result,sb,0,n,0,0);
return result;
}
public void gen(ArrayList<String> result,StringBuilder sb,int len,int n,int left,int right){
if(len==2*n){
result.add(sb.toString());
return;
}
if(left<n){
sb.append('(');
gen(result,sb,len+1,n,left+1,right);
sb.deleteCharAt(sb.length()-1);
}
if(right<left){
sb.append(')');
gen(result,sb,len+1,n,left,right+1);
sb.deleteCharAt(sb.length()-1);
}
}