前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字母异位分词-LeetCode49

字母异位分词-LeetCode49

作者头像
数据小冰
发布2022-08-15 14:21:00
1620
发布2022-08-15 14:21:00
举报
文章被收录于专栏:数据小冰

1.题目描述

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

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

说明:

•所有输入均为小写字母。

•不考虑答案输出的顺序。

2.我的题解

代码语言:javascript
复制
func groupAnagrams(strs []string) [][]string {
    m:=map[string][]string{}
    for _, str:=range strs{
        cs:=countString(str)
        m[cs]=append(m[cs],str)
      }

    ret:=make([][]string,0,len(m))
    for _, v:=range m{
        ret=append(ret,v)
    }
    return ret
 }


func countString(s string) string{
    count:=[26]int{}
    for _, r:=range []rune(s){
        index:=r-'a'
        if index<0 || index>=26{
            continue //exception filter it
        }
        count[index]+=1
    }
    var rs string
    for _, c:=range count{
        rs+=strconv.Itoa(c)
    }
    return rs
}

3.官方题解1

代码语言:javascript
复制
func groupAnagrams(strs []string) [][]string {
    mp := map[string][]string{}
    for _, str := range strs {
        s := []byte(str)
        sort.Slice(s, func(i, j int) bool { return s[i] < s[j] })
        sortedStr := string(s)
        mp[sortedStr] = append(mp[sortedStr], str)
    }
    ans := make([][]string, 0, len(mp))
    for _, v := range mp {
        ans = append(ans, v)
    }
    return ans
}

4.官方题解2

代码语言:javascript
复制
1.字符串s <==> int[26]等价   
2.map初始化方式 mp:=map[string][]string{}
3.map的key还可以是数组
func groupAnagrams(strs []string) [][]string {
    mp := map[[26]int][]string{}
    for _, str := range strs {
        cnt := [26]int{}
        for _, b := range str {
            cnt[b-'a']++
        }
        mp[cnt] = append(mp[cnt], str)
    }
    ans := make([][]string, 0, len(mp))
    for _, v := range mp {
        ans = append(ans, v)
    }
    return ans
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小冰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.题目描述
  • 2.我的题解
  • 3.官方题解1
  • 4.官方题解2
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档