golang力扣leetcode 49.字母异位词分组

简介: golang力扣leetcode 49.字母异位词分组

49.字母异位词分组

49.字母异位词分组

题解

思路:把字符串按字典序排序,然后存即可。简单题

这里遇到一个特别的用法mp := make(map[[26]int][]string)

以前我还以为[]int等等不能当作map的key,今天转念一想,之所以切片不能做key是因为其不能比较,但是长度固定的数组是可以比较的,所以数组是可以作为map的key的

代码

func groupAnagrams1(strs []string) [][]string {
  mp := make(map[string][]string)
  for _, v := range strs {
    s := []byte(v)
    sort.Slice(s, func(i, j int) bool {
      return s[i] < s[j]
    })
    sortString := string(s)
    mp[sortString] = append(mp[sortString], v)
  }
  var ans [][]string
  for _, v := range mp {
    ans = append(ans, v)
  }
  return ans
}
func groupAnagrams2(strs []string) [][]string {
  mp := make(map[[26]int][]string)
  for _, v := range strs {
    cnt := [26]int{}
    for _, vv := range v {
      cnt[vv-'a']++
    }
    mp[cnt] = append(mp[cnt], v)
  }
  var ans [][]string
  for _, v := range mp {
    ans = append(ans, v)
  }
  return ans
}
目录
相关文章
|
3天前
|
存储 算法
LeetCode第49题字母异位词分组
LeetCode第49题"字母异位词分组"的解题方法,通过将每个字符串的字符排序后作为键存储在HashMap中,有效地将所有字母异位词分组。
LeetCode第49题字母异位词分组
|
3天前
|
算法
LeetCode第17题电话号码的字母组合
该文章介绍了 LeetCode 第 17 题电话号码的字母组合的解法,通过分析得出可使用递归和回溯的思想解决,避免循环穷举的高循环次数,并给出了具体的编码实现,同时总结了该题较难理解,需要了解递归的本质,当嵌套循环层次多时可考虑递归。
LeetCode第17题电话号码的字母组合
|
2月前
|
算法 容器
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
|
1月前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
15 0
|
1月前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
15 0
|
2月前
|
存储
力扣经典150题第四十二题:字母异位词分组
力扣经典150题第四十二题:字母异位词分组
14 0
|
2月前
|
存储
力扣经典150题第四十一题:有效的字母异位词
力扣经典150题第四十一题:有效的字母异位词
12 0
|
2月前
|
算法
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
|
12天前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
26 6
|
12天前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
39 2