给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
通俗的说就是相同字母组合的为一个集合。此处注意char[] 转为String时使用String.valueOf会比Arrays.toString效率更高。String.valueOf与Arrays.toString对比
public List<List<String>> groupAnagrams(String[] strs) {
// 创建相同字符组合的数组map
Map<String,List<String>> resMap = new HashMap<>();
for(String temp : strs){
// 将字符串转为char数组
char[] arrayTemp = temp.toCharArray();
// char数组排序作为map的key
Arrays.sort(arrayTemp);
// 将相同字符组合的temp进行整合
List<String> valueTemp = resMap.get(String.valueOf(arrayTemp));
if(valueTemp == null){
valueTemp = new ArrayList<>();
valueTemp.add(temp);
resMap.put(String.valueOf(arrayTemp),valueTemp);
}else{
valueTemp.add(temp);
}
}
// 返回结果
return new ArrayList<>(resMap.values());
}
个人见解不喜勿喷!!!