思路:排序+哈希表映射
关键API:
char [] arr =str.toCharArray();
将字符串转为字符数组返回。
Arrays.sort(arr);
对数组进行排序;
Map.getOrDefault(Object key, V defaultValue):
要查找的键和默认值。如果键存在,则返回与该键关联的值,否则返回指定的默认值。
示例:
Map<Integer,Integer> map = new HashMap<>();map.put(1,11);// 存在Key1,返回11System.out.println(map.getOrDefault(1,22));// 不存在Key3,返回默认值33System.out.println(map.getOrDefault(3,33));
代码:
class Solution {public List<List<String>> groupAnagrams(String[] strs) {List<List<String>> result=new ArrayList<>();HashMap<String,List<String>> map=new HashMap<>(); //创建一个哈希map用来映射 key就是排序后的组成单词 List<String>就是由这个单词组成的for(String str:strs){char [] arr =str.toCharArray();Arrays.sort(arr); //将字母进行排序String key=new String(arr);List<String> fenzu=map.getOrDefault(key,new ArrayList<String>()); //根据key匹配 如果已经存在key 就返回对应的value 也就是这个key对应的集合//如果不存在 则返回默认值 此处默认值是一个空数组 就代表这个当前的key 还没有一样的fenzu.add(str);map.put(key,fenzu);}return new ArrayList<List<String>>(map.values());}}