题意:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1: 输入: s = "anagram", t = "nagaram" 输出: true
示例 2: 输入: s = "rat", t = "car" 输出: false
说明: 你可以假设字符串只包含小写字母。
思路:
- 理解什么是互为字母异位词:就是两个字符串中,字符出现的频次是否相同,相同则是,不同则不是
- 我们要判断某个字母是否出现在字符串里,即想到哈希表:一般哈希表都是用来快速判断一个元素是否出现集合里
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
//字符串s,t的长度不一样,直接不符合题意,return false
if(s.length !== t.length) return false
//1.定义数组record来记录字符串s里字符出现的频次
const record = new Array(26).fill(0)
//只要记录下每个字符相对于'a'的ASCII的值即可
const base = "a".charCodeAt()
//2.遍历字符串s,求出s中字符出现的次数
for (const i of s){
record[i.charCodeAt()-base]++
}
//3.遍历t字符串,对t中出现的字符映射哈希表索引上的数值-1
for(const i of t){
//4.record数组有不为0的元素,则说明两个字符串的字符出现频次不等,return false
if(!record[i.charCodeAt()-base]) return false
record[i.charCodeAt()-base]--
}
return true
};