Closed SummerXinBing closed 5 months ago
分类问题,可以使用hash; 找到分类问题的共性,然后作为key;分类聚合的list作为value;
算法思路
public static List<List<String>> groupAnagrams(String[] strs) { // 异位词字母单词 // 方法1:每一个str转成一个map,然后将map放在list中,相同的map就是一组 // 方法2:每一个str转成一个char数组,然后将数组排序; // 排序后的数组转成String(这就是异位词共同点),作为key; // 计算str的key,key相同的就是一组;一组key放在map的value中 HashMap<String, List<String>> map = new HashMap<>(); for (int i = 0; i < strs.length; i++) { String str = strs[i]; char[] charArray = str.toCharArray(); Arrays.sort(charArray); String key = new String(charArray); List<String> list = map.getOrDefault(key, new ArrayList<String>()); list.add(str); map.put(key,list); } ArrayList<List<String>> lists = new ArrayList<>(map.values()); return lists; }
分类问题,可以使用hash; 找到分类问题的共性,然后作为key;分类聚合的list作为value;
算法思路