class Solution {
// 判断两个是否是***的方法:
// 1.排序之后是否完全相同
// 2.对字符串的字母出现次数进行统计,应该完全相同
// 找了一个不太难,但是比较通用的算法:
// 建立一个map,key是排序后的字符串,val是对应的****
//
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String,List<String>> sorted2Anagrams=new HashMap<>();
for(String s:strs){
char[] c=s.toCharArray();
Arrays.sort(c);
String t=new String(c);
List<String> tlist=sorted2Anagrams.getOrDefault(t,new ArrayList<String>());
tlist.add(s);
sorted2Anagrams.put(t,tlist);
}
return new ArrayList<>(sorted2Anagrams.values());
}
}