2014年10月16日星期四

[Leetcode] 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 List<String> generateParenthesis(int n) {
        List<String> result = new ArrayList<String>();
        gen(n, n, "", result);
        return result;
    }
    
    private void gen(int l, int r, String current, List<String> result) {
        if(l == 0 && r == 0) {
            result.add(current);
        }
        
        if(l <= r) {
            if(l > 0) gen(l-1, r, current+"(", result);
            if(r > 0) gen(l, r-1, current+")", result);
        }
    }

没有评论:

发表评论