Java编程练习题:生成字符串所有组合

需积分: 43 1 下载量 122 浏览量 更新于2024-07-27 收藏 138KB DOC 举报
"Java编程练习题:字符串组合变换" 在本篇Java代码中,我们探讨的是一个有趣的问题:给定一个字符串(例如 "ABCD"),如何通过一个自定义函数生成新的字符串,其规则是将原字符串中的字符按照特定顺序插入到原字符串的前面,形成一个新的循环结构。具体来说,每次取原字符串的一个字符,并将其添加到结果字符串的前面,重复这个过程直到所有字符都被处理过。函数`list`就是实现这个功能的核心。 首先,我们来看`main`方法部分: ```java public static void main(String[] args) { String s = "ABCD"; // 原始字符串 List<String> result = new ArrayList<>(); // 用于存储组合后的字符串列表 list(s, "", result); // 调用list函数并将结果存入result System.out.println(result.size()); // 输出组合后的字符串数量 System.out.println(result); // 打印所有的组合结果 } ``` `list`方法接受三个参数:原始字符串`base`、一个空字符串`buff`作为初始结果,以及一个`List<String>`类型的`result`,用于存储生成的组合。方法的主要逻辑如下: 1. 定义一个`result`列表,用于存放所有可能的组合。 2. 当`base`字符串长度小于等于0时,说明已经遍历完了所有字符,此时将`buff`添加到结果列表中,表示完成一轮循环。 3. 使用`for`循环遍历`base`中的每个字符,对于每个字符: - 创建一个新的`StringBuilder`对象,使用`deleteCharAt(i)`方法移除当前字符,得到新的子串。 - 将子串与当前字符`base.charAt(i)`拼接,形成新的`buff`。 - 递归调用`list`方法,传入更新后的子串和新的`buff`,并将返回的结果添加到`result`列表中。 通过这个递归过程,`list`方法实现了将原字符串的所有字符以循环形式插入到结果字符串前部的操作。因此,当你运行这段代码,将会输出一个包含所有可能组合的列表,如:"abcacbbacbcacabcba"等。 这是一个很好的Java编程练习,对于新手来说,通过实现这样的函数,可以巩固对字符串操作、递归以及集合数据结构的理解,同时提升编程技巧。