22.括号生成

题目描述:

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

示例:

例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

解答:

回溯法

public static List<String> generateParenthesis(int n) {
        List<String> rs = new ArrayList<>();
        // 回溯法
        backtrack(rs, "", 0, 0, n);
        return rs;
    }

    private static void backtrack(List<String> rs, String current, int open, int close, int n) {
        // 一个字符串长度=对数*2
        if (current.length() == n * 2) {
            // 添加一个字符串
            rs.add(current);
            return;
        }
        // 左括号小于对数时,字符串拼接左括号,而且左括号个数+1
        if (open < n) {
            backtrack(rs, current + "(", open + 1, close, n);
        }
        //右括号个数小于左括号个数时,字符串拼接右括号,而且右括号个数+1
        if (close < open) {
            backtrack(rs, current + ")", open, close + 1, n);
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 ...
    莫小鹏阅读 2,939评论 0 0
  • 题目给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n =...
    HITZGD阅读 891评论 0 0
  • 给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出n=3,生成结果...
    不爱去冒险的少年y阅读 1,472评论 0 0
  • 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3...
    闭门造折阅读 1,054评论 0 0
  • [TOC] 4月4号 目的地 武汉 武汉我家门前一条江民宿 行程安排 17:59 高铁 -- 长沙 -> 武...
    HJWZYY阅读 2,833评论 0 1

友情链接更多精彩内容