您好,欢迎来到画鸵萌宠网。
搜索
您的当前位置:首页LeetCode-字母异位词分组

LeetCode-字母异位词分组

来源:画鸵萌宠网

题目描述

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

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

示例 1:

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

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

思路解析

本题的意思很简单,就是把字母组成相同的字符放在一个数组里面,为此,我们可以遍历数组,将每个字符串先变为一个char数组,然后对其进行排序,因为一个字符串如果组成相同,那么在排序后肯定是相同的。因此我们用一个map来储存每种字母组合,将排序后的字符串作为key,将原本的字符串作为value,依次放入其中。

实现代码

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo8.com 版权所有 湘ICP备2023022238号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务