22. Generate Parentheses

来源:互联网 发布:linux分区方案 知乎 编辑:程序博客网 时间:2024/04/30 10:09

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:

[  "((()))",  "(()())",  "(())()",  "()(())",  "()()()"]


解决办法: 分别有n个左括号和n个右括号,当右边括号数量大于左边的时候,可以选择放左括号或右括号,当左括号数量大于0的时候,也可以放左括号.

使用回溯法;

实现代码:

 public List<String> generateParenthesis(int n) {        List<String> list=new ArrayList<String>();        if(n<=0)            return list;        generateHelp(n,n,"",list);        return list;    }        public void generateHelp(int left,int right,String str,List<String> list){        if(left==0&&right==0)            list.add(str);        if(left>0){            generateHelp(left-1,right,str+"(",list);        }        if(right>left){            generateHelp(left,right-1,str+")",list);        }    }


0 0
原创粉丝点击