算法(字母异位词分组)

2.字母异位词分组

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

示例 1:

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

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

解释:

  • 在 strs 中没有字符串可以通过重新排列来形成 "bat"
  • 字符串 "nat""tan" 是字母异位词,因为它们可以重新排列以形成彼此。
  • 字符串 "ate""eat""tea" 是字母异位词,因为它们可以重新排列以形成彼此。

示例 2:

输入: strs = [""]

输出:[[""]]

示例 3:

输入: strs = ["a"]

输出:[["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母
java 复制代码
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> map = new HashMap<>();
        for(String s : strs){
            //1.把字符串转为字符数组,排序
            char[] arr = s.toCharArray();
            Arrays.sort(arr);
            String key = new String(arr);//排序后的字符串作为key 

            //按key分组(get:只拿值,考好了要自己进行判空;put:强制覆盖旧值;computeIfAbsent:不存在才创建,存在在复用,极简代码)
            map.computeIfAbsent(key,k -> new ArrayList<>()).add(s);
        }
        //把所有分组收集成结果
        return new ArrayList<>(map.values());
    }
}
相关推荐
杜子不疼.11 分钟前
【 C++ AI 大模型接入 SDK】 - 日志模块
开发语言·javascript·c++
knight_9___43 分钟前
大模型project面试4
人工智能·python·深度学习·算法·面试·agent
l1t1 小时前
DeepSeek总结的欢迎来到 ORDER BY 丛林
数据库·算法
谙弆悕博士1 小时前
【附C源码】二叉搜索树的C语言实现
c语言·开发语言·数据结构·算法·二叉树·项目实战·数据结构与算法
C+++Python1 小时前
C++ 泛型编程 极简示例代码
开发语言·c++
Rust研习社1 小时前
Ubuntu 全面拥抱 Rust 后,我意识到 Rust 社区要变了
linux·服务器·开发语言·后端·ubuntu·rust
宵时待雨1 小时前
回溯算法专题2:二叉树中的深搜
开发语言·数据结构·c++·笔记·算法·深度优先
jiayong231 小时前
第 43 课:任务详情抽屉里的批量处理闭环与删除联动
java·开发语言·前端
likerhood1 小时前
Java 访问修饰符:public、protected、private讲解
java·开发语言·javascript