我有一个程序可以打印给定字符串的所有排列可能性。但它是静态的,我硬编码3 for循环,假设字符串的长度为3.但如果我必须使其动态,用户可以输入一个长度为5的字符串。所以我问的是我可以根据用户的输入注入for循环吗?
import java.util.*;
import java.lang.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
String input = "abc";
int i=0,j=0,k=0;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
for(k=0;k<3;k++){
System.out.println(input.charAt(i)+""+input.charAt(j)+""+input.charAt(k));
}
}
}
}
}
答案 0 :(得分:0)
不,注入循环并不是可行的(幸运的是,这会使语言变得混乱!)
这样的任务通常可以通过递归实现,递归可以很容易地用于生成排列(字符串,数组或其他任何东西。)
如果确实不想使用递归,还有其他方法,例如你可以计算排列via rotation in loops - 但这些方法通常会更难以遵循(和写。)