力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class Solution {
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList<>();
backtracking(n, result, 0, 0, "");
return result;
}
public void backtracking(int n, List<String> result, int left, int right, String str) {
if (right > left)
return;
if (left == right && right == n) {// 找到有效的括号
result.add(str);
return;
}
if (left < n) {// 还有左括号,加入到str中
backtracking(n, result, left + 1, right, str +"(");
}
if (right < left) {// 左边的括号比右边的多
backtracking(n, result, left, right + 1, str +")");
}
}
}