我有一個在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