力扣49.字母异位词分组

题目描述:

49. 字母异位词分组

难度 中等

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

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

示例 1:

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

示例 2:

复制代码
输入: strs = [""]
输出: [[""]]

示例 3:

复制代码
输入: strs = ["a"]
输出: [["a"]]

解题思路分析:

题目意思简而言之就是,所有输入的单词,不关注单词中字母的排列顺序,只要字母都相同的就分为一组。

那么我们可以创建一个map集合,map集合的key存放每个单词排序后的字符串,map集合的value存放一个List集合(该集合中存放所有字母都相同的单词)。

实现步骤:

1.将输入的字符串数组分别循环取出

2.取出字符数组中的单个字符串后,再将将每个字符串转成字符数组

3.把字符数组排序后再转成字符串作为map集合的key

4.查看map集合中是否有排序后字符串的key对应的值,没有则对该key创建一个value值(ArrayList<String>)

5.将当前的字符串存放到当前key对应的map集合中

6.创建一个ArrayList集合存入所有map集合的value后返回【return ArrayList<List<String>>(map.values())】

**注意:**List<String> list = map.getOrDefault(key, new ArrayList<String>()); 这里用List接收(向上转型,这个是java基础不清楚的小伙伴可以去回顾一下这里不再赘述)

代码:

java 复制代码
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap();
        // 循环每个字符串数组
        for (String str : strs) {
            // 将字符串数组转成字符数组
            char[] chars = str.toCharArray();
            // 将字符数组中的字符排序
            Arrays.sort(chars);
            // 将排序后的字符数组转成新的排序后字符串
            String key = new String(chars);
            // 获取当前map集合中key对应的list集合,没有则新建一个list集合
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            // 将当前字符串添加到list集合中
            list.add(str);
            // 存入排序后的字符串作为key,存入当前字符串
            map.put(key, list);
        }
        // 取出map中的所有value放入ArrayList集合中返回 
        return new ArrayList<List<String>>(map.values());
    }
}

最后大功告成!

相关推荐
蝎子莱莱爱打怪3 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
狼爷4 小时前
Go 没有 override?别硬套继承!用接口+嵌入,写更清爽的“覆盖”逻辑
java·go
会员源码网6 小时前
使用`mysql_*`废弃函数(PHP7+完全移除,导致代码无法运行)
后端·算法
木心月转码ing6 小时前
Hot100-Day10-T438T438找到字符串中所有字母异位词
算法
小兔崽子去哪了7 小时前
Java 自动化部署
java·后端
ma_king7 小时前
入门 java 和 数据库
java·数据库·后端
后端AI实验室7 小时前
我用Cursor开发了3个月,整理出这套提效4倍的工作流
java·ai
HelloReader7 小时前
Wi-Fi CSI 感知技术用无线信号“看见“室内的人
算法
颜酱10 小时前
二叉树分解问题思路解题模式
javascript·后端·算法
码路飞11 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript