题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意: 若 s 和 t **中每个字符出现的次数都相同,则称 s 和 t **互为字母异位词。
解法:
抵消法
func isAnagram(s string, t string) bool {
strCount := make(map[byte]int)
for i := range s {
strCount[s[i]] ++
}
for i := range t {
strCount[t[i]] --
}
for _, count := range strCount {
if count != 0 {
return false
}
}
return true
}
抵消法优化
func isAnagram(s string, t string) bool {
if len(s) != len(t) {
return false
}
strCount := make(map[byte]int)
for i := range s {
strCount[s[i]] ++
}
for i := range t {
if _, ok := strCount[t[i]]; ok {
strCount[t[i]] --
if strCount[t[i]] < 0 {
return false
}
} else {
return false
}
}
return true
}