一,题目
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
使用递归
1,left表示左括号的个数,right表示右括号的个数
2,right等于n表示已经生成一个结果
3,生成合法规则
left>right可以添加左括号也可以添加右括号
left==right必须添加左括号
三,代码
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList<String>();
if (n <= 0) {
return result;
}
dfs(n, 0, 0, "", result);
return result;
}
private void dfs(int n, int left, int right, String sb, List<String> result) {
if (right == n) {
result.add(sb.toString());
return;
}
if (left > right) {
if (left < n) {
dfs(n, left + 1, right, sb+"(", result);
}
dfs(n, left, right + 1, sb+")", result);
} else if (left == right) {
dfs(n, left + 1, right, sb+"(", result);
}
}