我有一个在Java中的Strings
数组。我需要从数组中找到anagrams并将它们打印到屏幕上。爪哇语言查找算法
我很难与我应该比较数组元素来检查它们是否是anagrams的部分。我将如何做到这一点?我将不得不做一个循环来显然通过数组。
我认为我可以对String
进行排序然后比较它们(因为如果它们是字谜,它们将在排序时包含相同顺序的相同字母),但是如何解除它们以得到原始单词?
我有一个在Java中的Strings
数组。我需要从数组中找到anagrams并将它们打印到屏幕上。爪哇语言查找算法
我很难与我应该比较数组元素来检查它们是否是anagrams的部分。我将如何做到这一点?我将不得不做一个循环来显然通过数组。
我认为我可以对String
进行排序然后比较它们(因为如果它们是字谜,它们将在排序时包含相同顺序的相同字母),但是如何解除它们以得到原始单词?
您可以使用Map
映射排序的String
到数组索引的Collection
,这些数组索引是有序的String
的字母。
如果按字母顺序排列比哈希他们的信件里,他们应该是相同的......
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 IN的Map
那只有1个条目,你可以从地图中删除那些只是保留Map
那些从你的字典中有其他字谜的...
刚刚与亚马逊电话采访,这是他们问的确切问题。有趣的问题,如果你有超过10分钟解决它。 – Javamann 2012-06-14 20:46:47