(Java)查找数组中的所有可能对

当我尝试做这样的事情时,我意识到我真的需要去上大学!

无论如何我有一个字符串数组(275)我需要循环遍历它们并在java中创建所有可能的对的字符串。

我一直在学习递归,但我找不到答案。

谢谢

如果对abba不同,请执行以下操作:

 for i=0 to array.length for j=0 to array.length if i == j skip else construct pair array[i], array[j] 

如果没有,做这样的事情:

 for i=0 to array.length-1 for j=i+1 to array.length construct pair array[i], array[j] 

请注意,我假设数组包含唯一的字符串!

我提供了一个打印所有可能的n元组字符串的示例,只需将属性reqLen设置为2并打印所有可能的对。

 public class MyString { String[] chars = {"a", "b", "c"}; int reqLen = 2; private void formStrings(String crtStr){ if (crtStr.length() == reqLen){ System.out.println(crtStr); return; } else for (int i = 0; i < chars.length; i++) formStrings(crtStr + chars[i]); } public static void main(String[] args) { new MyString().formStrings(""); }} 

这是一个简单的双循环:

 for(int x = 0; x < 275; x++) { final String first = arrayOfStrings[x]; for(int y = 0; y < 275; y++) { if(y == x) continue; // will properly increase y final String second = arrayOfStrings[y]; // TODO: do stuff with first and second. } } 

编辑:正如注释所指出的,如果元素[a, b, c]只有一个ab而不是ba (称为组合),那么下面的代码将起作用:

 final ArrayList collected = new ArrayList(); for(int x = 0; x < 275; x++) { for(int y = 0; y < 275; y++) { if(y == x) continue; // will properly increase y final String p1 = arrayOfStrings[x] + arrayOfStrings[y]; final String p2 = arrayOfStrings[y] + arrayOfStrings[x]; if(!collected.contains(p1) && !collected.contains(p2)) { collected.add(p1); } } } // TODO: do stuff with collected