22. Generate Parentheses

来源:互联网 发布:淘宝美工设计培训 编辑:程序博客网 时间:2024/06/06 05:27

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);        }    }