目录

面试高频LeetCodeHot100-字母异位词分组

目录

面试高频#LeetCode#Hot100-字母异位词分组

题号链接

https://i-blog.csdnimg.cn/direct/79abbaade23a455b8f6f9c0aa5154955.png

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());
    }
}