コードを最適化したかったので、アルファベットの反復ごとに char 配列全体をコピーする代わりに、事前にコピーを行い、コピーに char を追加することにしました。
例えば:
コピー "主" (i=0)
最初の文字を変更する (aord、bord、cord &c)
コピー "主" (i=1)
2 番目の文字を変更します (lard、lbrd、lcrd &c)
&c
for (int i = 0; i < wordLength; i++) {
Word moddedWord = new Word(Arrays.copyOf(temp.word.content, wordLength));
for (int c = 0; c < alphabetLength; c++) {
if (alphabet[c] != temp.word.content[i]) {
// Word moddedWord = new Word(Arrays.copyOf(temp.word.content, wordLength));
moddedWord.content[i] = alphabet[c];
Word res = WordList.Contains(moddedWord);
if (res != null && WordList.MarkAsUsedIfUnused(res)) {
WordRec wr = new WordRec(res, temp);
q.Put(wr);
}
}
}
}
ただし、この小さな変更を行うと、以前はコメント行を使用してコピーしていたときに、プログラムが機能しなくなりました。これを何時間もデバッグしましたが、これを変更するものは何も見つかりません。さまざまな形式のコピーを試しました。「元の」単語を文字列として保存し、それを char 配列に変換しようとしましたコピーする必要がありますが、何も機能していないようです。ところで、「Word」は単なる char[] のラッパーです (Word.content は char[] フィールドです)。