剑指 Offer II 033. 变位词组

导读:本篇文章讲解 剑指 Offer II 033. 变位词组,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

题目

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

注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。

示例 1:

输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:

输入: strs = [“”]
输出: [[“”]]
示例 3:

输入: strs = [“a”]
输出: [[“a”]]

提示:

1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sfvd7V
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路和代码

class Solution {
    // 每个单词出现的次数是否相同,巧用JDK
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<>();
        // 迭代
        for(String str : strs){
            char[] ch = str.toCharArray();
            // 排序
            Arrays.sort(ch);
            // 再重新组合成字符串
            String s = new String(ch);
            // 如果map中不含有当前字符串
            if(!map.containsKey(s)){
                map.put(s, new ArrayList<>());
            }
            // 当数组中原来的值放到集合中
            map.get(s).add(str);
        }
        // 取出集合
        return new ArrayList<>(map.values());
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96171.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!