题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
解法一
思路
- 回溯法
代码
public List<String> generateParenthesis(int n) {
List<String> res = new LinkedList<>();
backtracking(n, res, 0, 0, "");
return res;
}
private void backtracking(int n, List<String> res, int left, int right, String str) {
if (right > left) {
return;
}
if (left == right && left == n) {
res.add(str);
return;
}
if (left < n) {
backtracking(n, res, left + 1, right, str + "(");
}
if (right < left) {
backtracking(n, res, left, right + 1, str + ")");
}
}