題目: 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);
}
}