1

これはちょっと変です。私が書いているコードは特定の単語ゲーム用なので、非常に専門的です。

HashMap<Integer, String>実行時に、インデックス付きの 4 文字の単語が 4036 個含まれています。同じクラスに、上random()から単語をランダムに選択するメソッドもありますHashMap。これはプレイヤーが最初に口にする言葉です。その後、一度に 1 文字ずつ単語を変更して、新しい有効な単語を作成します。例: FIVE -> FIRE -> WIRE -> WISE -> WISH ->など。明らかに、プレーヤーを開始するために選択した最初の単語を変更できないようにしたくありません (つまり、1 つの文字を変更することで作成される単語はありません)。

したがって、ランダムに選択された単語がこの基準を満たしているかどうかを確認する別の方法が必要です。4036 エントリすべてを反復処理する必要があると思います。それは簡単ですが、ランダムに選択された単語からちょうど 1 文字離れている単語があるかどうかを確認するにはどうすればよいでしょうか?

4

1 に答える 1

2

両方の単語を取り上げて、文字ごとに比較してください。同一の文字は同じ位置にある必要があるため、4 文字以下をチェックする 1 つのループのみが必要です。違いを確認するたびに、カウンターをインクリメントします。カウンターが 2 に達した場合、単語は複数の位置で異なります。4 文字のループが終了した後でカウンターが 1 に等しい場合は、1 つの位置だけが異なる 2 つの単語があります。

boolean differByOne(String w1, String w2) {
    int count = 0;
    for (int i = 0 ; i != 4 ; i++) {
        if (w1.charAt(i) != w2.charAt(i)) count++;
        if (count > 1) return false;
    }
    return count == 1;
}
于 2013-03-31T10:58:55.417 に答える