给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
class Solution {
public List<String> generateParenthesis(int n) {
List<String> result=new ArrayList();
help(result,"",n,n);
return result;
}
public void help( List<String> list,String s,int left,int right){
if(left>right){
return ;
}
if(left==right&&left==0){
list.add(s);
return;
}
if(left>0){
help(list,s+"(",left-1,right);
}
if(right>0){
help(list,s+")",left,right-1);
}
}
}