赞
踩
Java 程序计算列出字符串的所有排列组合
在此示例中,我们将学习计算Java中字符串的所有排列组合。
要理解此示例,您应该了解以下Java编程主题:
字符串的排列是指可以通过互换字符串字符的位置来形成的所有可能的新字符串。例如,字符串ABC具有的排列组合 [ABC,ACB,BAC,BCA,CAB,CBA]。
示例:Java 程序获取字符串的所有排列组合
示例import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
class Main {
public static Set getPermutation(String str) {
//创建 set 集合以避免重复排列
Set permutations = new HashSet();
//检查字符串是否为空
if (str == null) {
return null;
} else if (str.length() == 0) {
//递归的终止条件
permutations.add("");
return permutations;
}
//得到第一个字符
char first = str.charAt(0);
//获取剩余的子字符串
String sub = str.substring(1);
//递归调用getPersertion()
Set words = getPermutation(sub);
//遍历 words
for (String strNew : words) {
for (int i = 0;i<=strNew.length();i++){
//将排列插入到set集合中
permutations.add(strNew.substring(0, i) + first + strNew.substring(i));
}
}
return permutations;
}
public static void main(String[] args) {
//创建scanner类的对象
Scanner input = new Scanner(System.in);
// 接受用户的输入
System.out.print("输入字符串: ");
String data = input.nextLine();
System.out.println(data + " 的排列组合有: \n" + getPermutation(data));
}
}
输出结果输入字符串: ABC
ABC 的排列组合有:
[ACB, BCA, ABC, CBA, BAC, CAB]
在Java中,我们使用了递归来计算字符串的所有排列组合。在这里,我们将排列存储在set集合中。因此,不会有重复的排列组合。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。