LeetCode hto100——字母异位词分组
题目给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 1:输入: strs [eat, tea, tan, ate, nat, bat]输出: [[bat],[nat,tan],[ate,eat,tea]]解释在 strs 中没有字符串可以通过重新排列来形成 bat。字符串 nat 和 tan 是字母异位词因为它们可以重新排列以形成彼此。字符串 ate eat 和 tea 是字母异位词因为它们可以重新排列以形成彼此。示例 2:输入: strs []输出: [[]]示例 3:输入: strs [a]输出: [[a]]提示1 strs.length 1040 strs[i].length 100strs[i] 仅包含小写字母题解class Solution { public ListListString groupAnagrams(String[] strs) { MapString,ListString map new HashMapString,ListString(); for(String str : strs){ char[] array str.toCharArray(); Arrays.sort(array); String key new String(array); ListString list map.getOrDefault(key,new ArrayListString()); list.add(str); map.put(key,list); } return new ArrayListListString(map.values()); } }思路将字符串中的字符进行排序。因为异位词包含的字母及数量完全相同所以排序后的结果一定一致例如 eat 和 tea 排序后都是 aet。这个排序后的字符串就作为哈希表的 Key。使用 HashMap 进行归类。Key 是排序后的字符串Value 是原始字符串组成的列表。遍历原数组时利用 getOrDefault 方法将具有相同 Key 的原始字符串追加到同一个 List 中。遍历结束后Map 中所有的 Value 就是最终的分组结果将其转换为 ListListString 返回即可。