leetcode-49. 字母异位词分组

49. 字母异位词分组

  • 首先根据题意得知,异位词指的是不同词中字母相同

  • 拆分这个词为char[]数组,经过排序char[]数组,再转换为字符串key,如果有两个key是一样的,就说明这两个词为异位词

  • 把这个key当作map集合的键,维护一个list作为map的值,每次如果搜到了相同的key就添加到list里,如果没搜到相同的key就新建一个list

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<>();
        for(String str : strs){
             //首先根据题意得知,异位词中字母相同
            char[] chars = str.toCharArray();//拆分这个词为char[]数组
            Arrays.sort(chars); //经过排序char[]数组
            String key = new String(chars); //再转换为字符串key,如果有两个key是一样的,就说明这两个词为异位词
            List<String> list = map.getOrDefault(key, new ArrayList<>()); //把这个key当作map集合的键,维护一个list作为map的值,如果没搜到相同的key就新建一个list
            list.add(str); //每次如果搜到了相同的key就添加到list里
            map.put(key, list);
        }
        return new ArrayList<>(map.values());
    }
}

 

posted on 2022-10-13 16:03  老菜农  阅读(17)  评论(0编辑  收藏  举报

导航