golang力扣leetcode 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
}
经验分享 程序员 微信小程序 职场和发展