有效的字母异位词|刷题打卡

170 阅读1分钟

一、题目描述

给定两个字符串 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这些方法的使用哦,我们做算法一些会用的基础都要掌握好