gpt4 book ai didi

java - 将 list 的每个元素彼此相交

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:23 24 4
gpt4 key购买 nike

我试图将包含 String [] 的列表中的每个元素相互交叉。输入列表中的每个元素 (String[]) 的长度为 3 或 4

Input: [{'J', 'K', 'L'}, {'G', 'H', 'I'}]
Output: ["JG", "JH", "JI",
"KG", "KH", "KI",
"LG", "LH", "LI"]

Input: [{'J', 'K', 'L'}, {'G', 'H', 'I'}, {'A', 'B', 'C'}]
Output: ["JGA", "JGB", "JGC",
"KGA", "KGB", "KGC",
"LGA", "LGB", "LGC",
"JHA", "JHB", "JHC",
"KHA", "KHB", "KHC",
"LHA", "LHB", "LHC",
"JIA", "JIB", "JIC",
"KIA", "KIB", "KIC",
"LIA", "LIB", "LIC"]

输出中每个元素的大小等于输入列表中的元素总数。

我已经完成了以下操作,但没有得到正确的结果。

ArrayList<String> output = new ArrayList();
for (String [] s : InputList)
for (int i = 0; i < s.length; i++) {
if (output.size < 3)
output.add(s[i])
else {
output.add(output.get(i)+s[i]);
}
}
}

最佳答案

您可以使用递归方法。这适用于任何(合理)大小的列表:

public static List<String> combine(List<String[]> list) {
List<String> elements = new ArrayList<String>();
if (!list.isEmpty()) {
String[] head = list.get(0);
List<String> tail;
if (list.size() > 1) {
tail = combine(list.subList(1, list.size()));
} else {
tail = Arrays.asList("");
}
for (String headElem : head) {
for (String tailElem : tail) {
elements.add(headElem + tailElem);
}
}
}
return elements;
}

关于java - 将 list<string[]> 的每个元素彼此相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13214707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com