小工具知识网

当前位置: 首页 > 行业知识 > 【哈希】Leetcode 49、 字母异位词分组【中等】

行业知识

【哈希】Leetcode 49、 字母异位词分组【中等】

2026-11-13 17:20:43 来源:互联网转载

字母异位词分组

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

()

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

()

输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]

输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]

解题思路

1、创建一个哈希表,键为排序后的字符串,值为原始字符串列表。

2、遍历字符串数组,对每个字符串进行排序,并将排序后的字符串作为键,将原始字符串添加到对应键的值列表中。

3、返回哈希表中所有值列表,即为字母异位词组合在一起的结果。

具体步骤

1、创建一个哈希表 Map map。

2、遍历字符串数组 strs:

对每个字符串 str 进行排序,得到排序后的字符串 sortedStr。

如果 sortedStr 不在哈希表的键集合中,则将其添加为键,对应的值初 始化为一个新的字符串列表。

将原始字符串 str 添加到 sortedStr 对应的值列表中。

3、返回哈希表的所有值列表。

java实现

public class GroupAnagrams {    public static List groupAnagrams(String[] strs) {        if (strs == null || strs.length == 0) {            return new ArrayList();        }        Map anagramGroups = new HashMap();        for (String str : strs) {            char[] charArray = str.toCharArray();            Arrays.sort(charArray);            String sortedStr = new String(charArray);            anagramGroups.computeIfAbsent(sortedStr, k -> new ArrayList()).add(str);        }        return new ArrayList(anagramGroups.values());    }    public static void main(String[] args) {        String[] words = {"eat", "tea", "tan", "ate", "nat", "bat"};        List result = groupAnagrams(words);        System.out.println(result);    }}

上一篇:360浏览器视频下载教程

下一篇:聚看影院下载攻略,轻松几步,掌握观影资源下载技巧!