leetcode top 100 刷题之旅-top2(字母异位词)

59 阅读1分钟

解题思路:

image.png

具体的代码:

package top100

import (
    "fmt"
    "testing"
)

// 字母异位词分组
func TestTop2(t *testing.T) {
    strs := []string{"eat", "tea", "tan", "ate", "nat", "bat"}
    anagrams := groupAnagrams(strs)
    fmt.Println(anagrams)

}



func groupAnagrams(strs []string) [][]string {

    m := make(map[[26]int][]string)

    for _, str := range strs {
       // 每次都会清除26个字母的key
       var temp [26]int
       for _, char := range str {
          temp[char-'a']++
       }
       //相同的时候,会将相同的字符串,添加到切片中
       m[temp] = append(m[temp], str)

    }

    // 声明一个返回的结果类型
    var res [][]string
    // 将map中的数据添加到res中
    for _, value := range m {
       res = append(res, value)
    }
    return res
}