题目
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
示例
输入:n = 3
输出:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
大体思路
图片来源于网络
代码
public List<String> generateParenthesis(int n) {
//结果集
List<String> re=new ArrayList<String>();
//n为0直接返回
if(n==0) return re;
//加入初始字符串
AddBracket(re, "", n, n);
return re;
}
//re是结果集,a是左括号剩余个数,b是右括号剩余个数
public void AddBracket(List<String> re,String str,int a,int b){
if(a==0 && b==0){
re.add(str);
return;
}
if(a>b){
return;
}
if(a>0){
AddBracket(re, str+"(", a-1, b);
}
if(b>0){
AddBracket(re, str+")", a, b-1);
}
}