class Solution {
//两种解法,以下主要实现解法一
//解法一:分析数据的特点,有效的变位词组中的词排序之后锁呈现出来的字符串都是一样的,可以使用hash表对将排序后的数组作为键原本的字符串作为值
//解法二:如果字符串中所出现的字符将其ASCII码相乘之后得到的数也是一样的可以根据这个特性来作为hash表的键,但是这个特性锁带来的结果可能会出现乘法溢出的情况不大好
public List<List<String>> groupAnagrams(String[] strs) {
//遍历数组对数组中的每个词排序后得到的字符串作为键,本身作为值来实现
HashMap<String,List<String>> map = new HashMap<>();
for(String str : strs){
char[] chars = str.toCharArray();
Arrays.sort(chars);
String key = new String(chars);
//我们最终是以一个链表的形式存储整个结构的
map.putIfAbsent(key,new LinkedList<String>());
map.get(key).add(str);
}
return new LinkedList<>(map.values());
}
}
05-06
300
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)