我需要优化搜索引擎。所做的是通过像这样进行所有可能的组合来找到所有可能的 2 到 n 字母单词
(对于 2 个字母的单词)w = 任何字母都可以在第一个字母点 + 任何剩下的字母(但第一个字母)用于第二个点;checkIfIsWord(w)
(对于 n 个字母单词) n1 + n2 + n3 + n4 + ... n ;checkIfIsWord(w)
这是有效的,但相当耗时。请帮我想想如何让它更快!
这是代码:
String w = "";
for (int i = 0; i < letters.length; i++)
{
for (int j = 0; j < letters.length; j++)
{
if (i == j) continue;
w = "" + (char) letters[i] + (char) letters[j];
checkIfIsWord(w);
for (int k = 0; k < letters.length; k++)
{
if (i == k || j == k) continue;
w = "" + (char) letters[i] + (char) letters[j] + (char) letters[k];
checkIfIsWord(w);
for (int m = 0; m < letters.length; m++)
{
if (i == m || j == m || j == m || k == m) continue;
w = "" + (char) letters[i] + (char) letters[j] + (char) letters[k] + (char) letters[m];
checkIfIsWord(w);
...
}
}
}
}
方法checkIfIsWord
void checkIfIsWord(String w)
{
if (w.length() > 2
&& words.contains(w.toLowerCase()) // (1)
&& !allWords.contains(w))
{
allWords.add(w);
runOnUiThread(updateMaxWords);
}
}