Java anagram finder算法

时间:2012-02-17 01:23:23

标签: java arrays sorting anagram

我在Java中有一个Strings数组。我需要从数组中找到字谜并将它们打印到屏幕上。

我对我应该比较数组元素的部分有困难,以检查它们是否是字谜。我该怎么做?我必须制作一个循环来显示数组。

我认为我可以对String进行排序,然后对它们进行比较(因为如果它们是字谜,它们在排序时会以相同的顺序包含相同的字母),但是我如何取消它们以获得它们原来的一句话?

2 个答案:

答案 0 :(得分: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中只有Map只有1个条目,你可以从地图中删除只保留Map个字典中包含其他字谜的字符......

答案 1 :(得分:0)

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