49.字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

示例 1:

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

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

解释:

  • 在 strs 中没有字符串可以通过重新排列来形成 "bat"
  • 字符串 "nat""tan" 是字母异位词,因为它们可以重新排列以形成彼此。
  • 字符串 "ate""eat""tea" 是字母异位词,因为它们可以重新排列以形成彼此。

示例 2:

输入: strs = ""

输出:\[""]

示例 3:

输入: strs = "a"

输出:\["a"]


思路:

题目要将字母异位词 组合在一起说明字母异位词 一定有他们的共性

  • 字母异位词的每个词组的异位词经过ASCLL码排序后一定是一样的词组
  • 字母异位词的每个字母出现的次数是一样的

按照第一种共性我们就可以遍历每个字母异位词,先经过排序(作为key),然后将相同的key的字母异位词放入同一个集合即可

复制代码
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
       HashMap<String, List<String>> hashMap = new HashMap<>();
        for (String str : strs) {
            char[] charArray = str.toCharArray();
            Arrays.sort(charArray);
            String key = new String(charArray);
            if (!hashMap.containsKey(key)) {
                ArrayList<String> strings = new ArrayList<>();
                strings.add(str);
                hashMap.put(key, strings);
            } else {
                List<String> strings = hashMap.get(key);
                strings.add(str);
                hashMap.put(key, strings);
            }
        }
        return new ArrayList<>(hashMap.values());
    }
} 

相关推荐
吠品2 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘2 小时前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts
mabing9933 小时前
Qt 生成条纹图
开发语言·qt
Java内核笔记3 小时前
告别十亿美元的错误 : Spring Boot 4 空安全 (JSpecify) 实战
java·spring boot·后端
蓝悦无人机3 小时前
C++基础 — 函数总结
开发语言·c++
糖果店的幽灵3 小时前
langgraph的 MessagesState 解读
java·开发语言·人工智能·windows·langgraph
Fu_Lin_3 小时前
Qt 嵌入式从零基础到精通总纲
开发语言·qt·嵌入式·qt嵌入式
星空露珠4 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
码云数智-大飞4 小时前
PHP 接口开发规范:统一返回格式、异常处理与参数校验
开发语言·php
极光代码工作室4 小时前
基于SpringBoot的在线博客系统
java·springboot·web开发·后端开发