【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的列表值的列表
    }
}
相关推荐
稚南城才子,乌衣巷风流2 小时前
ST 表(Sparse Table)算法详解:原理、实现与应用
算法
hold?fish:palm2 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle2 小时前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法
青山木2 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b3 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
危桥带雨3 小时前
排序算法(快排、归并、计数、基数排序)
数据结构·算法·排序算法
啦啦啦啦啦zzzz3 小时前
算法:回溯算法
c++·算法·leetcode
IT探索3 小时前
Linux 查找文件指令总结
linux·算法
攻城狮Soar3 小时前
C++子类访问父类成员
c++·算法