Generate Parentheses

来源:互联网 发布:白金数据影评 编辑:程序博客网 时间:2024/05/17 04:03

递归解决,传入参数有:左括号数目lc,右括号数目rc,当前字符串temp,题目的参数n,返回的list

当lc==n时,后面全部加右括号,add到list

当lc>rc时,只能加右括号,即generate(lc,rc+1,temp+")",n,ret);

其他情况,既可以加左括号,也可以加右括号。

public ArrayList<String> generateParenthesis(int n) {        ArrayList<String> ret = new ArrayList<String>();        generate(0,0,"",n,ret);        return ret;    }        void generate(int lc,int rc,String temp,int n,ArrayList<String> ret){        if(lc == n){            for(int i = 0;i<n-rc;i++){                temp += ")";            }            ret.add(temp);            return;        }        generate(lc+1,rc,temp+"(",n,ret);        if(lc > rc){            generate(lc,rc+1,temp+")",n,ret);        }    }



0 0
原创粉丝点击