Generate Parentheses

来源:互联网 发布:网络社会组织 编辑:程序博客网 时间:2024/05/19 13:59

题目: Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

大意是:给定n对圆括号,要求将所有合法的圆括号序列找出来

/*

    解题思路:采用递归,当左括号的个数小于n的时候,就产生一个左括号,当右括号个数
    小于左括号的个数就产生右括号
    */
    public List<String> generateParenthesis(int n) {
        ArrayList<String> result=new ArrayList<String>();
        if(n==0){
            return result;
        }
        StringBuilder sb=new StringBuilder();
        gen(result,sb,0,n,0,0);
        return result;
    }
    public void gen(ArrayList<String> result,StringBuilder sb,int len,int n,int left,int right){
        if(len==2*n){
            result.add(sb.toString());
            return;
        }
        if(left<n){
            sb.append('(');
            gen(result,sb,len+1,n,left+1,right);
            sb.deleteCharAt(sb.length()-1);
        }
        if(right<left){
            sb.append(')');
            gen(result,sb,len+1,n,left,right+1);
            sb.deleteCharAt(sb.length()-1);
        }
    }
原创粉丝点击