22. Generate Parentheses

一、题目

  1、审题

    

  2、分析:

    给出数字 n,求所有正常的闭合的括号字符串的集合。

 

二、解答

  1、思路:

    利用循环不能解决问题,考虑用递归实现;

    a、当 '('   >= ‘)’ 时,才是正常情况;否则不能闭合,即结束此次递归;

    b、依次加入 '('、‘)’,当 ')' == '(',时,是一种满足的情况,加以记录,即结束此次递归;

 

    public List<String> generateParenthesis(int n) {
        List<String> resultList = new ArrayList<>();
        
        generateParenthesisHelper(resultList, n, "", 0, 0);
        return resultList;
    }
    
    private void generateParenthesisHelper(List<String> resultList, int n,
            String target, int left, int right) {
        
        if(left < right || left > n || right > n)
            return;
        if(left == n && right == n) {
            resultList.add(target);
            return;
        }
        generateParenthesisHelper(resultList, n, target + "(", left + 1, right);
        generateParenthesisHelper(resultList, n, target + ")", left, right + 1);
    }

 

posted @ 2018-08-03 21:50  skillking2  阅读(121)  评论(0编辑  收藏  举报