2012-02-17 52 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