J'ai des méthodes de permutationchaîne plus rapide permutation
public void permute(String str) {
permute(str.toCharArray(), 0, str.length() - 1);
}
private void permute(char[] str, int low, int high) {
if (low == high) {
writeIntoSet(new String(str, 0, length));
} else {
for (int i = low; i <= high; i++) {
char[] x = charArrayWithSwappedChars(str, low, i);
permute(x, low + 1, high);
}
}
}
private char[] charArrayWithSwappedChars(char[] str, int a, int b) {
char[] array = str.clone();
char c = array[a];
array[a] = array[b];
array[b] = c;
return array;
}
Mais quand je mets la chaîne, ce qui est une longueur de 10 lettres dans cette méthode, il fait 10! combinaisons et cela prend tellement de temps. Est-il possible de le rendre plus rapide?
EDIT
je dois faire des permutations de 10 lettres, mais après cela, je recherche ces "mots" dans le dictionnaire. Par exemple, j'ai - CxRjAkiSvH et j'ai besoin de mots CAR, CARS, CRASH, etc. Y at-il une option de performance?
Utiliser une boucle au lieu de la récursivité – Jeffrey
Combien de permutations voulez-vous si la chaîne est de 10 lettres? – esej
Au lieu de créer un grand ensemble, vous pouvez traiter chaque résultat à mesure que vous l'obtenez à l'aide d'une interface d'écoute. –