2012-02-17 50 views
4

我有一个在Java中的Strings数组。我需要从数组中找到anagrams并将它们打印到屏幕上。爪哇语言查找算法

我很难与我应该比较数组元素来检查它们是否是anagrams的部分。我将如何做到这一点?我将不得不做一个循环来显然通过数组。

我认为我可以对String进行排序然后比较它们(因为如果它们是字谜,它们将在排序时包含相同顺序的相同字母),但是如何解除它们以得到原始单词?

回答

0

您可以使用Map映射排序的String到数组索引的Collection,这些数组索引是有序的String的字母。

4

如果按字母顺序排列比哈希他们的信件里,他们应该是相同的......

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那些从你的字典中有其他字谜的...

+3

刚刚与亚马逊电话采访,这是他们问的确切问题。有趣的问题,如果你有超过10分钟解决它。 – Javamann 2012-06-14 20:46:47