2015-06-22 3 views
0

мне нужно напечатать все возможные комбинации любой строки без повторения символа, предположить, например, вход ABC IS-желательные комбинации являются- ABCACBBCABACCABCBAВсе возможное сочетание динамической струны различной длины?

Ниже мой код, который работает мелко-

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), но это не такая серьезная проблема.

+1

создать рекурсивную функцию. –

+0

Я также попытался с 'рекурсией', но не смог написать для динамической длины. –

+1

Возможный дубликат [Перестановка array] (http://stackoverflow.com/questions/2920315/permutation-of-array) – user985366

ответ

Смежные вопросы