leetcode 49. 字母异位词分组

2023.10.7

leetcode 49. 字母异位词分组_第1张图片

        根据字母异位词的定义,可知:所有字母异位词经过排序之后得到的字符串相同,所以可以定义一个哈希表,将排序后的字符串当作哈希表的键,哈希表的值则用来存储该字母异位词对应的所有字符串,最后将哈希表的值返回即可。

        java代码如下:

class Solution {
    public List> groupAnagrams(String[] strs) {
        Map> map = new HashMap<>();
        for(String str : strs){
            char[] array = str.toCharArray();//将字符串转化成字符数组,方便排序
            Arrays.sort(array);
            String key = new String(array);//将排序后的字符数组转回字符串,当作哈希表的键
            List list = map.getOrDefault(key,new ArrayList());//从哈希表取出当前键对应的值,若无则默认返回一个数组列表
            list.add(str);//将当前字符串加入数组列表
            map.put(key,list);
        }
        List> ans = new ArrayList<>(map.values());
        return ans;
    }
}

你可能感兴趣的:(leetcode专栏,leetcode,算法,数据结构,java)