【Golang】LeetCode 49. 字母异位词分组

49. 字母异位词分组

题目描述

思路

我们同样使用哈希表来解决这道问题。

具体来说,我们对初始给定的strs数组进行遍历,对于每一个取到的字符串str,我们将其转为[]byte并使用sort.Slice进行排序。

我们将排序好的[]byte命名为curr,它就代表着当前字符串的一种"模式",对于字典序相同的"模式",它们应该被归纳为同一组异位词,因为构成它们的字符经过字典序排序之后是相同的。

在遍历之前我们应该建立一个map,它的keystring类型,value[]string类型。curr作为key,我们更新它的value,通过append的方式将当前的str加入到value的数组当中。

在遍历结束之后,我们对字典的value进行一次遍历,将答案放到数组当中。

Golang 题解

go 复制代码
func groupAnagrams(strs []string) [][]string {
    ans := [][]string{}
    mp := map[string][]string{}
    for _, str := range strs {
        curr := []byte(str)
        sort.Slice(curr, func(i, j int) bool {
            return curr[i] > curr[j] 
        })

        if _, ok := mp[string(curr)]; !ok {
            mp[string(curr)] = []string{}
        }
        mp[string(curr)] = append(mp[string(curr)], str)
    }

    for _, v := range mp {
        ans = append(ans, v)
    }

    return ans
}
相关推荐
yyds_yyd_100867 小时前
1464. 数组中两元素的最大乘积(2026.07.27)
数据结构·c++·算法·leetcode
玖玥拾10 小时前
LeetCode 26 删除有序数组中的重复项
算法·leetcode
白白白小纯13 小时前
算法篇—返回倒数第k个节点
c语言·数据结构·算法·leetcode
退休倒计时13 小时前
【复习】LeetCode 二叉树DFS TypeScript
算法·leetcode·typescript·深度优先
白白白小纯14 小时前
算法篇—链表的中间节点
c语言·数据结构·算法·leetcode
Frostnova丶15 小时前
(19)LeetCode 54. 螺旋矩阵
算法·leetcode·矩阵
Frostnova丶15 小时前
(18)LeetCode 73. 矩阵置零
算法·leetcode·矩阵
番茄撒旦在上15 小时前
LeetCode 98.验证二叉搜索树-Medium
算法·leetcode
rannn_11115 小时前
【力扣hot100】哈希表专题——从两数之和到最长连续序列
java·算法·leetcode·哈希
go不是csgo16 小时前
从模板到五道 LeetCode:完全背包的 Golang 教学笔记
笔记·leetcode·golang