对每个字符串内部按字母排序,如果是相同组成的字符串,排序后的串应该是相同的
所以可以用这个排序后的串当做key来hash
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> ans = new ArrayList<>();
int n = strs.length;
HashMap<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();
for(int i=0;i<n;i++){
char []c = strs[i].toCharArray();
Arrays.sort(c);
String s = String.copyValueOf(c);
if(!map.containsKey(s))
map.put(s,new ArrayList<String>());
map.get(s).add(strs[i]);
}
map.forEach((k,v) -> {
ans.add(v);
});
return ans;
}
}