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 }