【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的列表值的列表
    }
}
相关推荐
leobertlan5 小时前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
蛋蛋的就会顺顺的5 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
开发小能手1236 小时前
答案daanC语言
数据结构·算法
小 黄 鸡6 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
Navigator_Z7 小时前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
pride.li9 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
旺仔仔仔9 小时前
机器人项目实战(5):从单次抓取,到接收指令连续做事
算法
旺仔仔仔9 小时前
机器人项目实战(2):识别物体、提取点云,再到抓取姿态
算法
姜鱼问生10 小时前
密码明明一样,为什么 GPG 说“错的“?
后端·算法·架构
启观川10 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法