最適化が必要なコードがあります。
for (int i = 0; i < wordLength; i++) {
for (int c = 0; c < alphabetLength; c++) {
if (alphabet[c] != x.word.charAt(i)) {
String res = WordList.Contains(x.word.substring(0,i) +
alphabet[c] +
x.word.substring(i+1));
if (res != null && WordList.MarkAsUsedIfUnused(res)) {
WordRec wr = new WordRec(res, x);
if (IsGoal(res)) return wr;
q.Put(wr);
}
}
}
単語は文字列で表されます。問題は、文字列が不変であるため、4 ~ 6 行目のコードが多くの文字列オブジェクトを作成することです。
より高速なコードを取得したい場合、単語表現をどのデータ構造に変更すればよいですか? char[] に変更しようとしましたが、次のコードを機能させるのに問題があります。
x.word.substring(0,i)
char[] から部分配列を取得するには? 4.6 行目の char と char[] を連結する方法は?
私が使用できる他の適切で変更可能なデータ構造はありますか? stringbuffer について考えましたが、stringbuffer に対する適切な操作が見つかりません。
この関数は、特定の単語を指定すると、1 文字異なるすべての単語を生成します。WordRec は、単語を表す文字列と、その単語の「親」へのポインタを持つ単なるクラスです。
前もって感謝します