题目描述
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
题解
class Solution {
List<String> res = new ArrayList<>();
StringBuilder sb = new StringBuilder();
public List<String> generateParenthesis(int n) {
backtracking(n, n);
return res;
}
public void backtracking(int left, int right) {
if(left == 0 && right == 0) {
res.add(sb.toString());
return;
}
if(left > right) {
return;
}
if(left > 0) {
sb.append('(');
backtracking(left-1, right);
sb.deleteCharAt(sb.length() - 1);
}
if(right > 0) {
sb.append(')');
backtracking(left, right-1);
sb.deleteCharAt(sb.length() - 1);
}
}
}