мне нужно напечатать все возможные комбинации любой строки без повторения символа, предположить, например, вход ABC
IS-желательные комбинации являются- ABC
ACB
BCA
BAC
CAB
CBA
Все возможное сочетание динамической струны различной длины?
Ниже мой код, который работает мелко-
public static void main(String[] args) {
String name="abcd";
char[] nameArray=name.toCharArray();
String result = null;
int flag=0;
for(int i=0;i<nameArray.length;i++){
for(int j=0;j<nameArray.length;j++){
for(int k=0;k<nameArray.length;k++){
for(int l=0;l<nameArray.length;l++){
result=""+nameArray[i]+nameArray[j]+nameArray[k]+nameArray[l];
flag=0;
for(Character c:nameArray){
if(!result.contains(c.toString())){
flag=1;
}
}
if(flag==0){
System.out.println(result);
}
}
}
}
}
}
проблема состоит в том, что это статическое, как- мы используем 4 для контура, так как длина строки является 4.How, чтобы написать тот же код для динамических строк различной длины? также очень сложна его временная сложность (n^n), но это не такая серьезная проблема.
создать рекурсивную функцию. –
Я также попытался с 'рекурсией', но не смог написать для динамической длины. –
Возможный дубликат [Перестановка array] (http://stackoverflow.com/questions/2920315/permutation-of-array) – user985366