Java 查找数组中所有可能的对
当我尝试做这样的事情时,我意识到我真的需要上大学 无论如何,我有一个字符串数组(275),我需要在它们之间循环,并用Java创建所有可能对的字符串Java 查找数组中所有可能的对,java,recursion,Java,Recursion,当我尝试做这样的事情时,我意识到我真的需要上大学 无论如何,我有一个字符串数组(275),我需要在它们之间循环,并用Java创建所有可能对的字符串 我一直在学习递归,但我找不到答案。这是一个简单的双循环: for(int x = 0; x < 275; x++) { final String first = arrayOfStrings[x]; for(int y = 0; y < 275; y++) { if(y == x) continue; //
我一直在学习递归,但我找不到答案。这是一个简单的双循环:
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.
}
}
如果配对
ab
和ba
不同,请执行以下操作:
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("");
}}
公共类MyString{
字符串[]字符={“a”、“b”、“c”};
内部需求=2;
私有void formStrings(字符串crtStr){
if(crtStr.length()=请求){
系统输出打印LN(crtStr);
返回;
}
其他的
for(int i=0;i
为什么要递归?double for语句就可以了。给定一个数组[A,b,c]
,是否要创建:[ab,ac,ba,bc,ca,cb]
?或者ab
和ba
是一样的吗?我相信你在学习了冒泡排序之后会找到答案。为什么要提到冒泡排序?问题甚至不在于排序。另请参见Hi中的函数解决方案。。我需要完全一样的东西。。但是我有一个很大的数组(比如大小为10^9)。。答复需要很长时间。。有没有优化的方法?我在这里看到的唯一可能的优化(第一种情况)是删除if测试,在循环之后,删除n个额外的对象,其中I==j
(如果可以使用所选的数据结构执行此操作)。这样,您就不必执行i==j检查的n^2次。但是,也许JVM已经在以更好的方式对此进行优化。然后,如果你能负担得起一些多线程或云计算,你总是可以在几个线程/服务器之间分割循环
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("");
}}