242. 有效的字母异位词

哈希

解题思路

  1. 记录 s 的每一个字符,放入 hash 中,次数 +1

  2. 如果 t 的字符在 hash 中出现,次数 -1

  3. 最后遍历 hash 表,若 hash 表记录的值都为 0 则说明 s 是 t 的有效的字母异位词

复杂度

  1. 时间复杂度:O(n),其中 ns 的长度;

  2. 空间复杂度:O1)

代码实现

var isAnagram = function (s, t) {
    if (s.length !== t.length) return false;

    let hash = new Array(26).fill(0);

    // 1. 将 s 的字符全部放入 hash 表中
    for (let i = 0; i < s.length; i++) {
        let offset = s.charCodeAt(i) - 97;
        hash[offset]++;
    }

    // 2. 将 t 的字符全部从 hash 中取出
    for (let i = 0; i < t.length; i++) {
        let offset = t.charCodeAt(i) - 97;
        hash[offset]--;
    }

    // 3. 如果 hash 表中全部是空的,则 s 是 t 的异位词
    for (let i = 0; i < hash.length; i++) {
        if (hash[i] !== 0) {
            return false;
        }
    }

    return true;
};

参考资料

  1. 卡尔:《代码随想录》

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 哈希
    1. 1.1. 解题思路
    2. 1.2. 复杂度
    3. 1.3. 代码实现
  2. 2. 参考资料