49. 字母异位词分组
func groupAnagrams(strs []string) [][]string {
mp := map[string][]string{}
for _, str := range strs {
s := []byte(str) //将str中的字母变成[]byte,然后再排序
//按ascii码从小到大排序
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
}
一旦需要根据特征进行归类,就应该利用散列表
问题: 怎么把具有相同字母的字符串归类
1.将str中的字母变成[]byte,然后再按照ascii码顺序进行排序
2.map中:index是字符串的 种类 ,也就是按ascii码排好顺序的字符串
value是和index具有相同字母的所有字符串
3,再写入一个二维数组切片[][]string,并返回