検索エンジンを最適化する必要があります。このように可能なすべての組み合わせを作成することにより、可能な2〜n文字の単語をすべて見つけることができます。
(2文字の単語の場合)w =任意の文字を1番目の文字のスポットに配置できます+任意の文字を2番目のスポットに残します(ただし1番目の文字を除く)。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);
}
}