LeetCode 22 Generate Parentheses

来源:互联网 发布:centos安装wget 编辑:程序博客网 时间:2024/06/09 21:37

原题:(频率4)

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个左括号和右括号,求所有的组合




代码和思路

//还是回溯法class Solution {    public List<String> generateParenthesis(int n) {        List<String> list = new ArrayList<>();        backtrack(list,"",0,0,n);        return list;            }    private void backtrack(List<String> list,String str,int open,int close,int n){        //结束迭代的条件:当括号字符串的长度等于2*n        if(str.length()==2*n){            list.add(str);            return;        }        //如果开口小于括号数n 那么就往str中加开口        if(open<n){            backtrack(list,str+"(",open+1,close,n);        }        //同上理        if(close<open){            backtrack(list,str+")",open,close+1,n);        }            }}


原创粉丝点击