自学内容网 自学内容网

JAVA学习-练习试用Java实现“括号生成”

问题:

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

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:

输入:n = 1
输出:["()"]
提示:

1 <= n <= 8

解答思路:

以下是使用 Java 实现括号生成的代码:

import java.util.ArrayList;
import java.util.List;

public class GenerateParentheses {
    public List<String> generateParenthesis(int n) {
        List<String> result = new ArrayList<>();
        backtrack(result, "", 0, 0, n);
        return result;
    }

    public void backtrack(List<String> result, String current, int open, int close, int max) {
        if (current.length() == max * 2) {
            result.add(current);
            return;
        }

        if (open < max) {
            backtrack(result, current + "(", open + 1, close, max);
        }

        if (close < open) {
            backtrack(result, current + ")", open, close + 1, max);
        }
    }

    public static void main(String[] args) {
        int n = 3;
        GenerateParentheses solution = new GenerateParentheses();
        List<String> parentheses = solution.generateParenthesis(n);

        for (String parenthesis : parentheses) {
            System.out.println(parenthesis);
        }
    }
}


上述代码中,定义了一个'generateParenthesis'方法,使用回溯法生成所有可能的括号组合。在'backtrack'方法中,根据当前的括号状态进行递归调用,当生成的括号长度达到指定长度时,将其添加到结果列表中。在'main'方法中,创建'GenerateParentheses'对象,并调用'generateParenthesis'方法生成括号组合并打印结果。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)


原文地址:https://blog.csdn.net/weixin_69763181/article/details/142867693

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!