我有一个字符串的arraylist(大小未知)(字符串长度不一样)。 我需要打印字符串中所有字符的组合(特定条件),不重复。它更像或像是数学中的元素组合。
条件:
这是一个例子:
数组列表是示例:["abc", "de", "fg"]
(输出字符串数:3(第1个字符串的大小)* 2(第2个字符串的大小)* 2(第3个字符串的大小)= 12)
输出应为:
["adf",
"adg",
"aef",
"aeg",
"bdf",
"bdg",
"bef",
"beg",
"cdf",
"cdg",
"cef",
"ceg"]
答案 0 :(得分:0)
List<String> a = Arrays.asList("a", "b", "c");
List<String> b = Arrays.asList("d", "e");
String[][] AB = a.stream().flatMap(ai -> b.stream().map(bi -> new String[] { ai, bi })).toArray(String[][]::new);
System.out.println(Arrays.deepToString(AB));
答案 1 :(得分:0)
首先,没有人应该为你提供实际的家庭作业代码。
以下是概念性概念的基本概念:
这可以通过(伪代码)递归地完成:
String[] allCombinations(String[] input) {
if (input is empty) {
return [ "" ]
}
String[] result
String[] childrenCombinations = allCombinations(input[1:])
foreach char c in input[0] {
foreach string s in childrenCombinations {
result += ( c + s )
}
}
return result
}
当然这是一个非常天真的递归逻辑,有很多不必要的对象创建。但是,它可以让您了解算法的外观。在理解逻辑之后,您可以考虑优化领域