描述:
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
思路分析:
1、正常dfs
2、需要注意添加左括号和右括号的前提条件
代码实现:
class Solution {
public List<String> ans = new ArrayList<>();
public void robot(int n, String cur, int left, int right, int max) {
if (cur.length() == max) {
ans.add(cur);
return;
}
if (left < n)
robot(n, cur + '(', left + 1, right, max);
if (right < left)
robot(n, cur + ')', left, right + 1, max);
}
public List<String> generateParenthesis(int n) {
ans.clear();
robot(n, "", 0, 0, n * 2);
return ans;
}
}