Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Leetcode 题目解析之 Group Anagrams

Leetcode 题目解析之 Group Anagrams

原创
作者头像
ruochen
发布于 2022-01-10 12:12:35
发布于 2022-01-10 12:12:35
1.3K0
举报

Given an array of strings, group anagrams together.

For example, given: "eat", "tea", "tan", "ate", "nat", "bat",

Return:

[

"ate", "eat","tea",

"nat","tan",

"bat"

]

Note:

For the return value, each inner list's elements must follow the lexicographic order.

All inputs will be in lower-case.

  1. 把每个string,按照字母分组,如”abc”和”cba”是一组
  2. 维护一个map,key是abc,value是abc一组string出现的下标
  3. 把每一组string找出,排序,加入结果
代码语言:txt
AI代码解释
复制
    public List<List<String>> groupAnagrams(String[] strs) {
        if (strs == null || strs.length == 0) {
            return new ArrayList<List<String>>();
        }
        List<List<String>> rt = new ArrayList<List<String>>();
        Map<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>();
        // 把单词分组
        for (int i = 0; i < strs.length; i++) {
            char[] c = strs[i].toCharArray();
            Arrays.sort(c);
            String k = Arrays.toString(c);
            ArrayList<Integer> list = new ArrayList<Integer>();
            if (map.containsKey(k)) {
                list = map.get(k);
            }
            list.add(i);
            map.put(k, list);
        }
        for (String s : map.keySet()) {
            List<Integer> l = map.get(s);
            List<String> group = new ArrayList<String>();
            // 把相同字母的单词放入同一个list
            for (Integer i : l) {
                group.add(strs[i]);
            }
            // 按字典序排序
            group.sort(new Comparator<String>() {
                public int compare(String x, String y) {
                    return x.compareTo(y);
                }
            });
            rt.add(group);
        }
        return rt;
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode-49-Group-Anagrams
输入一个字符串数组,输出的是:将相同字符的字符串放在一个数组的二维数组。相同字符的处理,基本就是要对字符串排序的。然后需要考虑的就是排序好的那一个字符串怎么存的问题。用的数据结构是map,string为键,对应的值是一个set或者是一个vector,存放满足要求的string,之后再用这个初始化结果数组。
小二三不乌
2018/08/02
2170
程序员面试金典 - 面试题 10.02. 变位词组(哈希map)
编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。 变位词是指字母相同,但排列不同的字符串。
Michael阿明
2020/07/13
3630
String - 49. Group Anagrams
Given an array of strings, group anagrams together.
ppxai
2020/09/23
2310
leetcode: 49. Group Anagrams
Problem # Given an array of strings, group anagrams together. # # For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], # Return: # # [ # ["ate", "eat","tea"], # ["nat","tan"], # ["bat"] # ] # Note: All inputs will be in lower-case
JNingWei
2018/09/27
4300
图解LeetCode——49. 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
爪哇缪斯
2023/05/10
6220
图解LeetCode——49. 字母异位词分组
LeetCode 0049 - Group Anagrams
Given an array of strings, group anagrams together.
Reck Zhang
2021/08/11
2630
Leetcode 49 Group Anagrams
Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"],  Return: [ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ] Note: All inputs will be in lower-case. 将组成字母相同的单词归为一类。 做个简单映射就好了 clas
triplebee
2018/01/12
6270
【LeetCode】49. Group Anagrams
Given an array of strings, group anagrams together.
韩旭051
2020/06/23
2650
LeetCode 49: 字母异位词分组 Group Anagrams
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
爱写bug
2019/11/11
8570
Leetcode No.49 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
week
2021/11/29
2520
leetcode每日一题:49. 字母异位词分组
题目:https://leetcode-cn.com/problems/group-anagrams
用户3578099
2020/12/30
3810
打卡群刷题总结0708——字母异位词分组
链接:https://leetcode-cn.com/problems/group-anagrams
木又AI帮
2020/07/14
2940
leetcode每日一题:49.字母异位词分组
leetcode每日一题:49. 字母异位词分组:https://leetcode-cn.com/problems/group-anagrams/
用户7685359
2020/12/22
4220
LeetCode 剑指 Offer II 033. 变位词组
题目地址(7V/">剑指 Offer II 033. 变位词组) https://leetcode-cn.com/problems/sfvd7V/ 题目描述 给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。 注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。   示例 1: 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate"
freesan44
2021/10/06
2590
LeetCode 剑指 Offer II 033. 变位词组
C#版 - Leetcode49 - 字母异位词分组 - 题解
在线提交: https://leetcode.com/problems/group-anagrams/
Enjoy233
2019/03/05
6950
49. 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
lucifer210
2019/10/15
6270
同字符词语分组
已知一组字符串,将所有anagram(由颠倒字母顺序而构成的字)放到一起输出。 例如:["eat", "tea", "tan", "ate", "nat", "bat"] 返回:[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ] LeetCode 49. Group Anagrams
小飞侠xp
2018/08/27
5400
​LeetCode刷题实战49:字母异位词分组
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/20
3600
​LeetCode刷题实战49:字母异位词分组
☆打卡算法☆LeetCode 49、字母异位词分组 算法解析
链接:49. 字母异位词分组 - 力扣(LeetCode) (leetcode-cn.com)
恬静的小魔龙
2022/08/07
3620
☆打卡算法☆LeetCode 49、字母异位词分组  算法解析
[Leetcode][python]Group Anagrams/字母异位词分组
题目大意 将所含字母相同,但排列顺序不同的字符串归并到一起。+ 注意点: 所有输入的字符都是小写的 返回结果中每个组的字符串都要按照字典序排列 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ] 解题思路 排序 2.存入dict 映射为{abc:abc,bac,acb}。 代码 class Solution(object): de
蛮三刀酱
2019/03/26
4200
相关推荐
LeetCode-49-Group-Anagrams
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档