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
}
