【Leetcode Hot 100刷题路线】| 找工作速刷 | 第23题 - [49] - 字母异位词分组

题目导航

题目描述

给定一个字符串数组 strs,将其中所有字母异位词组合在一起。字母异位词指字母相同但排列不同的字符串。

示例 :

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

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

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

题解

我使用的是排序+哈希表的做法,具体思路以注释的形式放在代码中,非常好理解。

java 复制代码
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        //字母异位词:字母内容相同但是顺序不同
        //哈希表记录答案
        //新建哈希表
        Map<String,List<String>> map = new HashMap<>();
        //遍历字符串数组
        for(String str:strs){
            //取每个字符串进行排序和与哈希表比较
            char[] s = str.toCharArray();
            Arrays.sort(s);
            //排序后与哈希表比对
            if(map.containsKey(new String(s))){
                //若是原先就有排序后的字符串,那么之间取来值,将原字符串添加到哈希表中
                map.get(new String(s)).add(str);
            }else{
                //若是map中没有对应的键和值,那么新建一个list将其放入
                List<String> temp = new ArrayList<>();
                temp.add(str);
                map.put(new String(s),temp);//键是排序后的字符串,值是原来的字符串组成的列表
            }
        }
        return new ArrayList<>(map.values());//map的列表值的列表
    }
}
相关推荐
非优秀程序员9 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法
文丑颜不良啊12 小时前
LeetCode2481~2500题目解析
java·leetcode
武子康15 小时前
驾驶轨迹换个坐标,就能给移动机器人用吗?
人工智能·算法·机器学习
文丑颜不良啊18 小时前
LeetCode2461~2480题目解析
java·leetcode
文丑颜不良啊20 小时前
LeetCode2441~2460题目解析
java·leetcode
文丑颜不良啊21 小时前
LeetCode2521~2540题目解析
java·leetcode
lisw0521 小时前
Dayhoff的PAM替换矩阵理论评介!
线性代数·算法·矩阵
一起学安全技术1 天前
拆大模型 03|注意力的一句话版本:不用论文讲清 Attention
深度学习·算法·语言模型·transformer
Delightrs1 天前
Rust LeetCode238 算法题解
开发语言·算法·rust