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.存在左括号,字符串可以加入”(”
2.右括号数量大于左括号,字符串可以加入”)”
3.当左右括号都为0,将字符串添加到数组
java实现
public List<String> generateParenthesis(int n) {
List<String> list = new ArrayList<String>();
String s = "";
genPar(list, s,n, n);
return list;
}
public void genPar(List<String> re,String s, int left, int right) {
if(left == 0 && right ==0){
re.add(s);
}
if (left > 0) {
genPar(re,s + "(",left - 1, right);
}
if (right > left) {
genPar(re,s + ")", left,right-1);
}
}