题目
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
递归生成结果,注意判断条件。
代码
import java.util.ArrayList;
public class GenerateParentheses {
public ArrayList<String> generateParenthesis(int n) {
ArrayList<String> list = new ArrayList<String>();
char[] array = new char[2 * n];
solve(list, array, 0, 0, n);
return list;
}
private void solve(ArrayList<String> list, char[] array, int left,
int right, int n) {
if (left == n && right == n) {
list.add(new String(array));
}
if (right < left) {
array[left + right] = ')';
solve(list, array, left, right + 1, n);
}
if (left < n) {
array[left + right] = '(';
solve(list, array, left + 1, right, n);
}
}
}