字母异位词分组

字母异位词分组

题目

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

思路

  • 要查询异位词,就可以使用一个map,怎么让不同的异位词的key相同呢?
    • 可以把每个字符串进行排序作为他的key,这样不同的异位词key就相等了,然后作为map的key,value是一个数组,装着所有key相同的异位词

解决方案

public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> result = new ArrayList<>();
        Map<String, List<String>> map = new HashMap<>();
        for (String str : strs) {
            char[] charArray = str.toCharArray();
            Arrays.sort(charArray);
            List<String> list = map.getOrDefault(new String(charArray), new ArrayList<>());
            list.add(str);
            map.put(new String(charArray), list);
        }
        return new ArrayList<List<String>>(map.values());
    }

posted on 2024-11-04 20:21  oYYo  阅读(2)  评论(0编辑  收藏  举报

导航