leetcode 力扣 49 字母异位词分组

25 阅读1分钟
public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<>();
        for (String str : strs) {
            char[] array = str.toCharArray();
            Arrays.sort(array);
            String key = new String(array);
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            map.put(key, list);
        }

        return new ArrayList<List<String>>(map.values());
    }

排序
哈希表的组成:key:排序后的单词字符串,value:相同字母异位词的列表
第一步:排序,将字符串转换成数组,排序
第二步:将排序后的数组转换为字符串,作为哈希表的key
第三步:使用getOrDefault()检查哈希表中是否存在当前的key,有则返回相同字母异位词的列表,没有则返回一个新列表
第四步:将排序前的单词插入返回的列表,并将key,list插入哈希表