Java字谜查找算法

Java字谜查找算法,java,arrays,sorting,anagram,Java,Arrays,Sorting,Anagram,我有一个Java中的字符串数组。我需要从数组中找到字谜并打印到屏幕上 我在比较数组元素以检查它们是否为字谜的部分遇到了困难。我该怎么做?显然,我需要做一个循环来遍历数组 我想我可以对字符串s进行排序,然后比较它们(因为如果它们是字谜,排序时它们将以相同的顺序包含相同的字母),但是我该如何将它们分解才能得到原始单词呢?你可以使用一个映射,将一个有序的字符串映射到一个数组索引集合,数组索引是有序的字符串的anagram如果你对字母进行字母排序而不是散列,它们应该是相同的 Map<String,

我有一个Java中的
字符串数组。我需要从数组中找到字谜并打印到屏幕上

我在比较数组元素以检查它们是否为字谜的部分遇到了困难。我该怎么做?显然,我需要做一个循环来遍历数组


我想我可以对
字符串
s进行排序,然后比较它们(因为如果它们是字谜,排序时它们将以相同的顺序包含相同的字母),但是我该如何将它们分解才能得到原始单词呢?

你可以使用一个
映射,将一个有序的
字符串映射到一个
数组索引集合,数组索引是有序的
字符串的anagram

如果你对字母进行字母排序而不是散列,它们应该是相同的

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 words=newhashmap();
for(字符串字:incomingWords){
最终字符串键=按字母顺序排列(单词);
if(单词.包含(键)){
words.get(key)、add(word);
}否则{
words.put(key,newarraylist());
words.get(key)、add(word);
}
}

现在你有了
Map
的字谜词。。。你还可以在地图中找到只有一个条目的
列表,你可以从地图中删除这些条目,只保留字典中其他字谜的
地图。

刚刚与亚马逊进行了电话采访,这正是他们问的问题。如果你有超过10分钟的时间来解决这个有趣的问题。