Problem: 22. 括号生成
Code
使用 static 会被复用
class Solution {
List<String> ans = new ArrayList<>();
public List<String> generateParenthesis(int n)
{
dfs(n, n, "");
return ans;
}
/**
* @param l 左括号待补个数
* @param r 右括号待补个数
* @param s 当前的括号序列
*/
private void dfs(int l, int r, String s)
{
// l > r:右括号数 > 左括号数 非法
if (l < 0 || r < 0 || l > r)//剪枝
return;
if (l == r && l == 0)
{
ans.add(s);
return;
}
dfs(l - 1, r, s + "(");
dfs(l, r - 1, s + ")");
}
}