2

コードを最適化したかったので、アルファベットの反復ごとに 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[] フィールドです)。

4

1 に答える 1