func digitCount(num string) bool {
digitMap := map[int]int{}
for _, i := range num {
a, err := strconv.Atoi(string(i))
if err != nil {
return false
}
digitMap[a]++
}
// 判断
for i := 0; i < len(num); i++ {
b, err := strconv.Atoi(string(num[i]))
if err != nil {
return false
}
if digitMap[i] != b {
return false
}
}
return true
}
官方解答
使用rune作为key。
c-‘0’ 将字符串转化为数字
判断的时候使用的for range循环。也使用了c-‘0’转化为数字。
func digitCount(num string) bool {
cnt := map[rune]int{}
for _, c := range num {
cnt[c-'0']++
}
for i, c := range num {
if cnt[rune(i)] != int(c-'0') {
return false
}
}
return true
}