LeetCode热题100——字母异位词分组

题目要求

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

示例 1:

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

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

解题思路

可以利用java中字符数组所自带的排序方法,题目中要求将字母异位词组合,即单词不同,但单词中所含字母均相同,利用排序方法就可以将字符串数组中的字母异位词筛选出来,利用哈希表来进行接受。

由于哈希表有键值一一对应的要求,可以利用排序后的字符串来作为键,将原字符串数组中的字母异位词分别作为值,最后利用哈希表的调出所有值的方法,生成一个集合,在返回这个集合,该集合就是题目要求的结果。

代码实现

java 复制代码
import java.util.*;
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> map = new HashMap();
        for(int i=0;i<strs.length;i++){
            String word=strs[i];
            char[] charArr=word.toCharArray();
            Arrays.sort(charArr);
            String key=new String(charArr);
            if(!map.containsKey(key)){
                map.put(key,new ArrayList<>());
            }
            map.get(key).add(word);
            
        }
        return new ArrayList<>(map.values());
    }
}
相关推荐
从琳开始98922 分钟前
从Socket到UDP回显服务器:Java网络编程完整指南
java·网络·网络协议·udp·java-ee
SZYSK30 分钟前
OpenHarmony 上读卡、推理和双屏刷新抢 CPU:核验机与消费机的调度差
物联网·算法·harmonyos·1024程序员节
Ivanqhz1 小时前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
西瓜拿铁好喝1 小时前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
学长毕设1 小时前
基于SpringBoot的校园礼服租赁系统的设计与实现
java·spring boot·后端
lpfasd1231 小时前
推荐算法进化史
算法·机器学习·推荐算法
明天也要努力学习1 小时前
深入理解 JVM 垃圾回收(GC)
java·jvm
Pniubi1 小时前
力扣543二叉树的直径(深度优先搜索法(递归))
算法·leetcode·职场和发展
golang学习记1 小时前
IDEA 断点调试技巧:拖拽
java·ide·intellij-idea
Sayai1 小时前
Flink 日志解析任务性能优化实战:正则/Grok 预编译、Guava 缓存权重陷阱与 ES 写入隔离
java·大数据·性能优化·flink·实时计算