我有置換方法更快串排列
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等字樣。是否有任何性能選項?
使用循環代替遞歸 – Jeffrey
如果字符串是10個字母,您需要多少個排列? – esej
而不是構建一個大集合,您可以使用偵聽器接口來處理每個結果。 –