[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());
    }
}
相关推荐
布莱克6059 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
D e re k ZH12 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
石小石Orz13 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
民乐团扒谱机14 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
青少儿编程课堂14 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:中缀表达式求值解析
c++·python·算法·bfs·信息学竞赛
武子康16 小时前
Qwen-Drive 到底是什么:4B 级 VLM 如何成为驾驶策略底座
人工智能·算法·机器学习
zh_xuan18 小时前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
机 _ 长18 小时前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
早起CaiCai19 小时前
【2023-01 OM】利用深度学习算法融合异质观测实现海洋场降尺度
人工智能·深度学习·算法