init
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
package top100liked
|
||||
|
||||
// https://leetcode.cn/problems/group-anagrams/?envType=study-plan-v2&envId=top-100-liked
|
||||
|
||||
// 我居然能在算法题里写出这么离谱的代码
|
||||
|
||||
// type s2 struct {
|
||||
// Str string
|
||||
// CharMap map[rune]int
|
||||
// Used bool
|
||||
// }
|
||||
|
||||
// func (s *s2) Equal(target *s2) bool {
|
||||
// return maps.Equal(s.CharMap, target.CharMap)
|
||||
// }
|
||||
|
||||
// func newS2() *s2 {
|
||||
// return &s2{
|
||||
// Str: "",
|
||||
// CharMap: make(map[rune]int),
|
||||
// Used: false,
|
||||
// }
|
||||
// }
|
||||
|
||||
// func groupAnagrams(strs []string) [][]string {
|
||||
// l := make([]*s2, 0)
|
||||
// for _, str := range strs {
|
||||
// _s2 := newS2()
|
||||
// _s2.Str = str
|
||||
// for _, c := range str {
|
||||
// _s2.CharMap[c]++
|
||||
// }
|
||||
// l = append(l, _s2)
|
||||
// }
|
||||
// res := [][]string{}
|
||||
// for i, s2_1 := range l {
|
||||
// if s2_1.Used {
|
||||
// continue
|
||||
// }
|
||||
// r := []string{}
|
||||
// r = append(r, s2_1.Str)
|
||||
// s2_1.Used = true
|
||||
// for j := i + 1; j < len(l); j++ {
|
||||
// s2_2 := l[j]
|
||||
// if !s2_2.Used && s2_1.Equal(s2_2) {
|
||||
// r = append(r, s2_2.Str)
|
||||
// s2_2.Used = true
|
||||
// }
|
||||
// }
|
||||
// res = append(res, r)
|
||||
// }
|
||||
|
||||
// return res
|
||||
// }
|
||||
|
||||
func stringTurntobytes(s string) [26]byte {
|
||||
bytes := [26]byte{}
|
||||
for _, v := range s {
|
||||
bytes[v-'a']++
|
||||
}
|
||||
return bytes
|
||||
}
|
||||
|
||||
func groupAnagrams(strs []string) [][]string {
|
||||
m := make(map[[26]byte]int)
|
||||
res := make([][]string, 0)
|
||||
index := 0
|
||||
for _, str := range strs {
|
||||
bytes := stringTurntobytes(str)
|
||||
if _, ok := m[bytes]; ok {
|
||||
res[m[bytes]] = append(res[m[bytes]], str)
|
||||
} else {
|
||||
m[bytes] = index
|
||||
index++
|
||||
res = append(res, []string{str})
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
Reference in New Issue
Block a user