【JS】判断有效的字母异位词

步骤

  1. 长度比较:首先检查两个字符串的长度是否相等。如果长度不相等,则直接返回 false,因为变位词的定义要求两个字符串必须包含相同数量的字符。

  2. 创建字符计数映射:使用一个 Map 对象来存储第一个字符串中每个字符的出现次数。Map 的键是字符,值是该字符出现的次数。

  3. 统计第一个字符串:遍历第一个字符串 s 中的每个字符,对于每个字符,如果它已经在 Map 中,则将其计数加一;如果不在 Map 中,则将其添加到 Map 中并设置计数为一。

  4. 校验第二个字符串:遍历第二个字符串 t 中的每个字符,对于每个字符:

    • 检查 Map 中是否存在该字符,并且对应的计数是否大于零。如果字符不存在于 Map 中,或者对应的计数为零,则说明第二个字符串包含第一个字符串中没有的字符,因此它们不可能是变位词,返回 false
    • 如果字符存在并且计数大于零,将其在 Map 中的计数减一。
  5. 最终判断:完成第二个字符串的所有字符校验后,如果所有字符都通过了校验,说明两个字符串的字符及其数量完全相同,因此它们是变位词,返回 true

题目

示例代码

var isAnagram = function(s, t) {
    // 如果两个字符串的长度不相等,则它们不可能是变位词
    if (s.length !== t.length) return false;
    // 创建一个Map对象(ES6引入的集合类型) 
    //特性:存储键值对,键的顺序会被记住,键唯一
    let count = new Map();
    // 遍历字符串s中的每个字符
    for(let item of s){
        // 如果字符已经在Map中,则增加它的计数,否则设置为1
        count.set(item, (count.get(item) || 0) + 1);
    }
    // 遍历字符串t中的每个字符
    for(let item of t){
        // 如果Map中没有该字符或者该字符的计数为0,则说明t中有s中没有的字符,返回false
        if(!count.get(item)) return false;

        // 将Map中该字符的计数减1
        count.set(item, count.get(item) - 1);
    }
    // 如果所有字符都通过了检查,说明s和t是变位词,返回true
    return true;
};

欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值