一、题目描述
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例
输入: s = "anagram", t = "nagaram"
输出: true
二、思路分析
做了几道数组和链表的题目之后,让我再来看一个有关哈希的题目吧~
其实这个的思路,比较好理解。但是我们不一定第一次就可以写好
我们看一下题目,其实就能分析出,只要两个字符穿所有字母的出现次数都是相等的,就可以。那么我们就可以在一个数组里,给二十六个字母开辟空间,去比较每个空间的数目
三、AC代码
var isAnagram = function (s, t) {
if(s.length !== t.length) {
return false
}
const hash = new Array(26).fill(0);
const aCode = 'a'.charCodeAt(0);
for (let i = 0; i < s.length; i++) {
hash[s.charCodeAt(i) - aCode]++;
}
for (let i = 0; i < t.length; i++) {
if (hash[t.charCodeAt(i) - aCode] == 0) {
return false;
}
hash[t.charCodeAt(i) - aCode]--;
}
for (const v of hash) {
if (v != 0) {
return false;
}
}
return true;
};
四、总结
不要忘了charCodeAt,new Array这些方法的使用哦,我们做算法一些会用的基础都要掌握好