题目:
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]生成合法括号组合(dfs)
public class Solution {
public List<String> generateParenthesis(int n) {
LinkedList<String> res = new LinkedList<String>();
if(n<=0)return res;
String str ="";
dfs(n,n,res,str);
return res;
}
/**
*
* @param r 剩余右括号
* @param l 剩余左括号
* @param res 结果
* @param str 生成括号字符串
*/
private void dfs(int r,int l,LinkedList<String> res,String str)
{
//左括号使用小于右括号
if(l>r)return ;
if(r==0 && l==0){
res.add(new String(str));
return;
}
if(l>0)dfs(r,l-1,res,str+"(");
if(r>0)dfs(r-1,l,res,str+")");
}
}