我有一个Strings
Java数组。我需要从数组中找到字谜并将它们打印到屏幕上。
我在应该比较数组元素以检查它们是否是字谜的部分遇到困难。我该怎么做?显然,我必须创建一个循环才能通过数组。
我认为我可以对String
s 进行排序然后比较它们(因为如果它们是字谜,它们在排序时会以相同的顺序包含相同的字母),但是我将如何对它们进行排序以获得原始单词?
如果你按字母顺序排列字母而不是散列它们,它们应该是相同的......
Map<String, List<String>> words = new HashMap<String, List<String>>();
for(String word : incomingWords) {
final String key = alphabetize(word);
if(words.contains(key)){
words.get(key).add(word);
} else {
words.put(key, new ArrayList<String>());
words.get(key).add(word);
}
}
现在你有Map
字谜的单词......你也将有List
s 在Map
只有 1 个条目,你可以从地图中删除那些只保留一个Map
从字典中具有其他字谜的单词......
您可以使用Map
将有序映射String
到Collection
数组索引的 a ,这些索引是有序 的变位词String
。