我有个问题。因此,假设我有大约10种不同的字符串类型,我需要编写一个方法,根据字符串是否为字形,将它们分组在一起。最好的方法是什么?二维数组?
显然,我还有其他方法可以比较字符串并确定它们是否是字谜。这个问题只是想问我如何解决这个问题,即在不同的组中对不同的字符串进行排序。
列表示例:-Dog -Bread -Africa -God -Dreab -dGO -Treat -dabre -trate -China
组1:狗,神,dGO
组2:面包,Dreab,dabre
第三组:非洲
第4组:处理,处理
第五组:中国
发布于 2020-12-27 19:44:10
基于上述答案的Java代码。
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
List<String> words = new ArrayList<String>(strs.length);
words.addAll(Arrays.asList(strs));
for(String str:words){
char[] word = str.toCharArray();
Arrays.sort(word);
String sortedWord = new String(word);
if(anagrams.containsKey(sortedWord)){
anagrams.get(sortedWord).add(str);
}
else{
anagrams.put(sortedWord, new ArrayList<String>(Arrays.asList(str)));
}
}
List<List<String>> output = new ArrayList<List<String>>();
for(Map.Entry<String, List<String>> entry:anagrams.entrySet()){
output.add(entry.getValue());
}
return output;
}在这里,anagram将是映射,它将以排序形式的anagram单词的键值对作为键,并将该anagram的相应变体作为值。
https://stackoverflow.com/questions/58150969
复制相似问题