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());
    }
}
相关推荐
jjjava2.04 分钟前
牛客算法题(第四期)
算法
雪碧聊技术6 分钟前
力扣 回溯法 | LCR 020. 回文子串
javascript·算法·leetcode
不才不才不不才7 分钟前
Spring 源码系列(17): HandlerMapping 与 HandlerAdapter 两大体系
java·后端·spring
wabs66612 分钟前
关于哈希表【力扣454.四数相加II的思考】
数据结构·算法·leetcode·散列表
lisin-lee-cooper21 分钟前
JVM知识体系
java·jvm
我能坚持多久25 分钟前
优选算法——专题一双指针(上):附四道例题详解
c++·学习·算法
Forever Nore26 分钟前
LeetCode 2 两数相加 - 链表
leetcode·链表·哈希表
Tim_1030 分钟前
【C++】023、移动语义&深拷贝
开发语言·c++·算法
月光船幽幽40 分钟前
锁死后干预有效性的关键突破
人工智能·python·算法
凤山老林41 分钟前
Spring Boot 大文件处理实战:分片上传、断点续传与 OSS 集成
java·spring boot·后端·大文件上传·分片上传·断点续传