小念子

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

 

 解答:

    private int number;
    private List<String> result;
    public List<String> generateParenthesis1(int n) {
        if (n == 0) {
            return Collections.emptyList();
        }
        number = n;
        result = new ArrayList<String>();
        generateParenthesis("", 0, 0);
        return result;
    }
    
    private void generateParenthesis(String str, int leftCount, int rightCount) {
        if (leftCount > number || rightCount > number) {
            return;
        }
        if (leftCount == number && rightCount == number) {
            result.add(str);
        }
        if (leftCount >= rightCount) { // 左括号数量>=右括号数量
            generateParenthesis(str + "(", leftCount + 1, rightCount);
            generateParenthesis(str + ")", leftCount, rightCount + 1);
        }
    }

 

posted on 2021-02-19 19:55  小念子  阅读(28)  评论(0编辑  收藏  举报