[HOT 100]今日一练------字母异位词分组

题目链接

49. 字母异位词分组 - 力扣(LeetCode)

思路

哈希,map中对应的键值对为:排序过的String: 异位词String

因为不同字母的ASCII码大小不同,我们可以根据这个特性将一个String转换成一个字母数组之后对这个数组进行排序,如果是由相同字母组成的字符串,那么排序后的结果一定是一致的,因此可以将其视为一个字母异位词,我们只需要判断排序过后组成的新字符串是否在map中即可进行后续操作

代码

java 复制代码
class Solution {
    //map:    有序String: 当前String
    public List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String, List<String>> map = new HashMap<>();
        for(String key: strs) {
            char[] chars = key.toCharArray();
            Arrays.sort(chars);
            String sortedString = new String(chars);
            if(map.containsKey(sortedString)) {
                map.get(sortedString).add(key);
                map.put(sortedString, map.get(sortedString));
            } else {
                List<String> list = new ArrayList<>();
                list.add(key);
                map.put(sortedString, list);
            }
        }
        return new ArrayList<>(map.values());
    }
}
相关推荐
澈20715 小时前
图论入门:拓扑排序实战指南
算法·拓扑排序·有向图
Cthy_hy15 小时前
Python 算法竞赛:快速IO+字符串常用方法一站式整理
开发语言·python·算法
bnmoel15 小时前
数据结构深度剖析二叉树・中篇:堆的概念及结构 ,实现应用全解析
数据结构·算法·二叉树··top-k问题
智者知已应修善业16 小时前
【51单片机按键加减最大60显示0不再增加减到0不再减】2023-11-18
c++·经验分享·笔记·算法·51单片机
菜菜的顾清寒16 小时前
力扣HOT100(30)两两交换链表中的节点
算法·leetcode·链表
小龙报16 小时前
【优选算法】双指针专项:1.移动零 2. 复写零 3.快乐数
java·c语言·数据结构·c++·python·算法·面试
代码中介商16 小时前
排序算法完全指南(六):希尔排序深度详解
java·算法·排序算法
Lumbrologist16 小时前
【C++】零基础入门 · 第 3 节:条件判断(if、switch)
开发语言·c++·算法
codealy17 小时前
Rust 核心理论: 高并发与异步(四)
算法·rust