У меня есть методы перестановки
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;
}
Но когда я помещаю в этот метод строку длиной 10 символов, получается 10! комбинаций, и это занимает так много времени. Есть ли возможность как сделать быстрее?
ИЗМЕНИТЬ
Мне нужно сделать перестановки из 10 букв, но после этого я ищу эти "слова" в словаре. Например у меня - CxRjAkiSvH и мне нужны слова CAR, CARS, CRASH и т.д. Есть ли вариант производительности?