力扣链接:
https://leetcode-cn.com/probl...
解题思路:
- 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词,注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词
- 这里的异位词,其实就是不同单词之间的字母数都相同,条件里面s和t都只包含小写字母
- 查找某个元素是否存在,以及元素出现的个数,可以使用哈希表来实现
- 同时这道题也有一个特殊条件,那就是所有字母都是小写的,数组其实也是一种哈希表,所有字母都是小写的情况下,这个哈希表的个数是确定的,也就是26个,所以可以使用数组来代替,因为map的查找更加耗时,并且也更耗内存
func isAnagram(s string, t string) bool {
// 使用数组初始化26个字母
record := make([]int, 26)
// 遍历s
for i := 0; i < len(s); i++ {
record[s[i] - 'a'] += 1
}
for j := 0; j < len(t); j++ {
record[s[j] - 'a'] -= 1
}
for k := 0; k < len(record); k++ {
if record[k] != 0 {
return false
}
}
return true
}