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)!