Generate Parentheses

題目: 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);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章