题目:
题解
题解: 1.写这个题的时候我准备用hashMap的做法,核心思想就是循环每个值排序,因为如果是字母异位词排序完再转换成string值一定是一样的,就是代码中的key是一样的。比如:abc和acb是异位词,但是abc和acb排完序都是是abc,核心思想。
2.我拿一个map存储,map的key是排序后的值,value是一组相同异或词的集合就是List,当我发现map存在排序后的key字符串就往这个list里面添加当前值,比如集合已经有[abc]下一次循环的值是acb那我就往[abc]这个集合里面add上acb变成[abc,acb]。
3.当map的key不存在的时候直接存当前值初始化的List,比如循环的是xyz,map的key没有xyz的时候就初始化数组放xyz变成key是xyz,value是[xyz]。最后把整个map的value返回
java代码
List<List<String>> ans = new ArrayList<>();
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String, List<String>> map = new HashMap();
for (int i = 0; i < strs.length; i++) {
char[] chars = strs[i].toCharArray();
Arrays.sort(chars);
String key = String.valueOf(chars);
if (map.containsKey(key)) {
List<String> temp = map.get(key);
temp.add(strs[i]);
} else {
List<String> temp = new ArrayList<>();
temp.add(strs[i]);
map.put(key, temp);
ans.add(temp);
}
}
return ans;
}
最后
坚持打卡保持手感我想要掘金周边!!!!!!!!!!!!!!
备注
本文正在参与「掘金 2021 春招闯关活动」, 点击查看。