🌕 49. 字母异位词分组

吞佛童子2022年6月9日
  • algorithm
  • hash
小于 1 分钟

🌕 49. 字母异位词分组

难度: 🌕

问题描述

img_5.png


解法

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        // 思路:
        // 遍历 每个字符串
        // 对当前字符串排序
        // HashMap 记录判断是否有当前排序后的字符串
        // 不存在则是一个新的集合
        // HashMap 记录以排好序后的字符串所在的链表
        List<List<String>> res = new ArrayList<>();
        HashMap<String, List<String>> map = new HashMap<>();
        for(String str : strs) {
            char[] array = str.toCharArray();
            Arrays.sort(array);
            String cur = String.valueOf(array);
            if(!map.containsKey(cur)) {
                List<String> list = new ArrayList<>();
                list.add(str);
                map.put(cur, list);
            } else {
                List<String> list = map.get(cur);
                list.add(str);
                map.put(cur, list);
            }
        }
        // 取出 map 中链表出结果
        for(List<String> list : map.values()) {
            res.add(list);
        }
        return res;
    }
}

输出

img_4.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou