面试高频#LeetCode#Hot100-字母异位词分组
题号链接
49. 字母异位词分组 - 力扣(LeetCode)
1首先定义map集合一个String对应一个String[]集合,遍历字符串数组
2对其先进行拆分,拆分为字符数组,再进行排序,再转为字符串
3如果key值没有就创建一个字符串集合,将遍历的str放入
4如果key值在map中有,那就返回其所对应的values,将遍历的str放入
5最后直接返回map所有的values组成的集合
代码实现:
import java.util.*;
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
// 1. 定义 Map,键为排序后的字符串,值为字母异位词列表
Map<String, List<String>> map = new HashMap<>();
// 2. 遍历字符串数组
for (String str : strs) {
// 3. 将字符串拆分为字符数组,排序后再转为字符串
char[] chars = str.toCharArray();
Arrays.sort(chars);
String sortedKey = new String(chars);
// 4. 如果键不存在,创建一个新列表;如果存在,直接获取列表
map.computeIfAbsent(sortedKey, k -> new ArrayList<>()).add(str);
}
// 5. 返回 Map 中所有值组成的集合
return new ArrayList<>(map.values());
}
}