leetcode 51: Generate Parentheses

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:

"((()))", "(()())", "(())()", "()(())", "()()()"



public class Solution {
    private ArrayList<String> rel= new ArrayList<String>();
    
    public ArrayList<String> generateParenthesis(int n) {
        // Start typing your Java solution below
        // DO NOT write main() function
        
        rel.clear();
        char[] arr = new char[2*n];
        genCur(2*n,n,0,0, arr);
        return rel;
    }
    
    private void genCur(int sz, int left, int right, int level, char[] arr) {
        if(level == sz) {
            rel.add( new String(arr) );
            return;
        }
        
        if(left>0) {
            arr[level] = '(';
            genCur(sz,left-1, right+1, level+1, arr);
        }
        
        if(right>0) {
            arr[level] = ')';
            genCur(sz,left, right-1, level+1, arr);
        }
    }
}

 

posted @ 2013-01-24 18:35  西施豆腐渣  阅读(142)  评论(0编辑  收藏  举报