依旧使用到了map这种数据结构;value存储各个字母异位词分组,key存储每个分组对应的经排序后的字符串。
遍历给定的字符串数组,取出每个字符串,先转化为字符数组,利用数组内置函数进行排序,再转回为字符串,这个实际上就行map要存储的key;
根据改值检索map,
若查到,取出value(即存放各个字母异位词分组的list),为list添加当前遍历到的字符串;
若没有查到,新建list,再添加当前遍历到的字符串;
最后都再次存入map;
map的values便是最后所求结果
class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String,List<String>> res = new HashMap<>(); for(String s : strs){ char[] ch = s.toCharArray(); Arrays.sort(ch); String k = new String(ch); List<String> list = res.getOrDefault(k,new ArrayList<>()); list.add(s); res.put(k,list); } return new ArrayList<>(res.values()); } }