DeepSeek专家 LeetCode 49. 字母异位词分组 Java实现

DeepSeek专家    LeetCode 49. 字母异位词分组 Java实现 以下是 LeetCode 49. 字母异位词分组 的 Java 实现采用 哈希表 排序 的方法。思路字母异位词排序后得到的字符串相同因此可以将排序后的字符串作为哈希表的键原始字符串作为值存入对应的列表。遍历所有字符串最终哈希表中每个键对应的列表即为一组字母异位词。代码importjava.util.*;classSolution{publicListListStringgroupAnagrams(String[]strs){MapString,ListStringmapnewHashMap();for(Stringstr:strs){// 将字符串转为字符数组并排序得到统一键char[]charsstr.toCharArray();Arrays.sort(chars);StringkeynewString(chars);// 将原始字符串加入对应键的列表ListStringlistmap.getOrDefault(key,newArrayList());list.add(str);map.put(key,list);}returnnewArrayList(map.values());}}复杂度分析· 时间复杂度O(n * k log k)其中 n 是字符串数量k 是字符串的最大长度。每个字符串排序需要 O(k log k)遍历所有字符串需要 O(n)。· 空间复杂度O(n * k)哈希表存储所有字符串排序过程中还需要临时字符数组。补充说明· 如果字符串长度很大可以用 字符计数编码如 a2b3c1代替排序将时间复杂度优化到 O(n * k)但排序方法更直观且通常足够。· map.values() 返回的是 CollectionList需要包装成 ArrayList 返回。