
求解代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
private ArrayList<String> ans = new ArrayList<>();
private void backtrack(int left,int right,StringBuilder sb){
if(left==0&&right==0){
ans.add(new String(sb));
return;
}
if(left>right){
return;
}
if(left<0||right<0){
return;
}
sb.append('(');
backtrack(left-1, right, sb);
sb.deleteCharAt(sb.length()-1);
sb.append(')');
backtrack(left, right-1, sb);
sb.deleteCharAt(sb.length()-1);
}
public ArrayList<String> generateParenthesis(int n) {
StringBuilder sb = new StringBuilder();
backtrack(n, n, sb);
return ans;
}
|
小贴士
对于一个合法的括号字符串组合,其任意位置的左括号数量都大于等于右括号数量。