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());
    }
}
相关推荐
li星野1 小时前
FAISS 详解:原理、使用与面试指南——向量检索的基石
面试·职场和发展·faiss
微三云、小叶2 小时前
排队免单系统底层设计:四种分配算法拆解,无预支资金的合规营销架构方案
java·前端·软件开发·商业模式·本地生活·商业思维
就叫_这个吧2 小时前
Java+MySQL+Mybatis+Junit4实现学生信息管理系统
java·mysql·mybatis
乐之者v2 小时前
xxl-job添加执行器
java
Billlly2 小时前
莫比乌斯反演学习笔记
算法
可乐ea2 小时前
【知识获取与分享社区项目 | 项目日记第 19 天】基于 Elasticsearch 实现关键词检索与业务权重排序
java·大数据·spring boot·mysql·elasticsearch·搜索引擎·全文检索
zzz_23683 小时前
【Spring】面试突击系列(一):IoC 与 DI 深度解析
java·spring·面试
stolentime3 小时前
CF2066D1 Club of Young Aircraft Builders (easy version)题解
c++·算法·动态规划·组合数学
Dillon Dong3 小时前
【风电控制】高低穿现场失败的原因分析——算法简单但工程复杂
算法·变流器·风电控制·dfig