【发布时间】:2017-05-12 06:01:09
【问题描述】:
我有一个单词的 ArrayList,我想将这些单词相互比较,以将它们存储在 HashTable 中(以字谜组的形式)。
我知道如何比较 两个 单词来测试它们是否是字谜,但我不知道如何比较更长的单词列表。
例如:
- 列表中有 10 个单词
- 其中5个是彼此的字谜
- 其中2个也是彼此的字谜(但不属于第一组)
- 所以,3组;一组字词组(5 个字),另一组 1 组(2 个字),1 组(3 个字)随机字
如何比较这 10 个单词以找到这 5+2 个字谜,并将这些字谜组(单独)存储到哈希表中?
编辑:
比较两个词的代码:
public static boolean isAnagram(String firstWord, String secondWord) {
boolean anagram;
if (firstWord.length() != secondWord.length()) {
return false;
}
firstWord = firstWord.toLowerCase();
secondWord=secondWord.toLowerCase();
char[] c1 = firstWord.toCharArray();
char[] c2 = secondWord.toCharArray();
Arrays.sort(c1);
Arrays.sort(c2);
String sc1 = new String(c1);
String sc2 = new String(c2);
if (sc1.equals(sc2)) {
System.out.println("ANAGRAMS");
} else {
System.out.println("NOT ANAGRAMS");
}
return sc1.equals(sc2);
}
我确信这可以适用于比较无限数量的字符串。然后下一个难题是确保将单独的字谜组存储在哈希表中。
【问题讨论】:
-
你尝试了什么?
-
蛮力解决方案是将每个单词与其他单词进行比较,并在找到 Anagram 时存储。
-
最简单的方法是遍历所有单词并将每个单词 w 与其他单词进行比较 9. 制作哈希表:w - > w. 的字谜
-
@Bhargav 但是,如果有超过 1 组字谜,如何使它起作用