Leetcode 438. 找到字符串中所有字母异位词 JavaScript (Day 4)

javascript 复制代码
var findAnagrams = function (s, p) {
    let ans = [];
    let idx = new Map();
    for (let x of p)
        idx.set(x, (idx.get(x) ?? 0) + 1);
    let left = 0, right = 0;
    while (right < p.length) {
        if (idx.has(s[right])) {
            idx.set(s[right], idx.get(s[right]) - 1);
        }
        right++
    }
    while (right <= s.length) {
        if ([...idx.values()].every(x => x === 0)) ans.push(left);
        if (idx.has(s[right])) {
            idx.set(s[right], idx.get(s[right]) - 1);

        }
        if (idx.has(s[left])) {
            idx.set(s[left], idx.get(s[left]) + 1);

        }
        right++;
        left++;
    }
     return ans;
}

核心思想:滑动窗口
左指针移动 ,map中+1;
右指针移动 ,map中-1;
算法注意点:循环的结束条件是right <= s.length 一定要加等于,不然会漏掉最后一组数
语法注意点: every 语法 用来判断数组里的 每个元素 是否都满足一个条件

相关推荐
创思通信2 小时前
STM32F103C8T6采 DS18B20,通过A7680C 4G模块不断发送短信到手机
javascript·stm32·智能手机
海绵宝龙2 小时前
Vue 中的 Diff 算法
前端·vue.js·算法
zhougl9962 小时前
vue中App.vue和index.html冲突问题
javascript·vue.js·html
止观止2 小时前
告别全局污染:深入理解 ES Modules 模块化与构建工具
javascript·webpack·vite·前端工程化·es modules
wadesir2 小时前
高效计算欧拉函数(Rust语言实现详解)
开发语言·算法·rust
aini_lovee2 小时前
基于扩展的增量流形学习算法IMM-ISOMAP的方案
算法
white-persist2 小时前
【内网运维】Netsh 全体系 + Windows 系统专属命令行指令大全
运维·数据结构·windows·python·算法·安全·正则表达式
千寻girling2 小时前
面试官: “ 请你讲一下 package.json 文件 ? ”
前端·javascript·面试
如果你好2 小时前
解决深拷贝循环引用痛点:一篇看懂 WeakMap 实现方案
前端·javascript