数字 n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
在生成途中保证
如果长度==2n,成为ans的一种情况
1.左括号数量<=n
2.右括号始终数量<=左括号
class Solution {
public List<String> generateParenthesis(int n) {
List<String> ans=new ArrayList();
backtracking(ans,n,0,0,new StringBuilder());
return ans;
}
private void backtracking(List<String> ans,int n,int open,int close,StringBuilder cur){
// 长度符合要求 成为ans的一种情况
if(cur.length()==2*n){
ans.add(cur.toString());
return;
}
// 左括号
if(open<n){
cur.append('(');
backtracking(ans,n,open+1,close,cur);
cur.deleteCharAt(cur.length()-1);
}
// 右括号
if(close<open){
cur.append(')');
backtracking(ans,n,open,close+1,cur);
cur.deleteCharAt(cur.length()-1);
}
}
}