字母异位词分组

字母异位词分组

1. 题目描述

提示
题目链接:https://leetcode.cn/problems/group-anagrams/description/

2. 解题思路

核心总结

  • 寻找灵魂指纹:将单词字符排序后作为 HashMap 的 Key。所有互为异位词的单词排序后结果一致,从而可以归入同一个 List。

💡 易错点

Java 中 Arrays.toString() 拿到的是内存地址,必须用 String.valueOf(charArray) 获取内容字符串作为 Key。

3. 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution {

public List<List<String>> groupAnagrams(String[] strs) {

if(strs == null || strs.length == 0) {return new ArrayList<>();}

Map<String,List<String>> map = new HashMap();

for(String s : strs){

char[] ch = s.toCharArray();

Arrays.sort(ch);

String key = String.valueOf(ch);

map.computeIfAbsent(key,k->new ArrayList<>()).add(s);

}

return new ArrayList<>(map.values());

}

}

4. 复杂度分析

  • 时间复杂度:$O(n)$
  • 空间复杂度:$O(1)$

5. 总结与反思


本文已被观测了
« 上一篇 主页 下一篇 »