给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
拿到这一题,第一感觉就是hash实现,直接上代码
func isAnagram(s string, t string) bool {
if len(s) != len(t){
return false
}
m := make(map[byte]int, len(s))
for i:=0;i<len(s);i++{
m[s[i]]++
m[t[i]]--
}
for i := 0;i<len(s);i++{
if m[s[i]] != 0{
return false
}
}
return true
}
对于字符串太长的时候,申请的map长度有些浪费,考虑申请26个固定的长度,短字符串的优化效果并不明显
func isAnagram(s string, t string) bool {
if len(s) != len(t){
return false
}
m := make(map[byte]int, 26)
for i:=0;i<len(s);i++{
m[s[i]]++
m[t[i]]--
}
for i := 0;i<len(s);i++{
if m[s[i]] != 0{
return false
}
}
return true
}