4

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

我在应该比较数组元素以检查它们是否是字谜的部分遇到困难。我该怎么做?显然,我必须创建一个循环才能通过数组。

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

4

2 回答 2

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字谜的单词......你也将有Lists 在Map只有 1 个条目,你可以从地图中删除那些只保留一个Map从字典中具有其他字谜的单词......

于 2012-02-17T01:29:52.873 回答
0

您可以使用Map将有序映射StringCollection数组索引的 a ,这些索引是有序 的变位词String

于 2012-02-17T01:29:32.347 回答