1

这个有点奇怪。我正在编写的代码是针对特定文字游戏的,因此非常专业。

我有一个HashMap<Integer, String>在运行时包含 4036 个索引的 4 字母单词。在同一堂课中,我还有一个方法random()可以从 said 中随机选择一个单词HashMap。这是玩家开头的单词。然后,他或她将一次更改单词 1 个字母以形成新的有效单词。例如,->->电线->明智->愿望->。显然,我不希望选择启动播放器的第一个单词是不可更改的(即,更改一个字母不会产生任何单词)。

所以,我需要一种不同的方法来检查随机选择的单词是否符合这个标准。我猜我需要遍历所有 4036 个条目。这很容易,但是我如何检查是否有任何单词与随机选择的单词相差 1 个字母?

4

1 回答 1

2

取这两个词,逐个字母地比较它们。由于相同的字母必须位于相同的位置,因此这只需要一个检查不超过四个字母的循环。每次看到差异时,增加一个计数器。如果计数器达到 2,则单词在多个位置上有所不同。如果在四个字符的循环结束后计数器等于 1,则您有两个单词在一个位置上完全不同:

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 回答