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 语法 用来判断数组里的 每个元素 是否都满足一个条件

相关推荐
Kratzdisteln2 分钟前
【1902】0120-3 Dify变量引用只能引用一层
android·java·javascript
wen__xvn3 分钟前
基础算法集训第03天:递推
算法
满栀5855 分钟前
jQuery 递归渲染多级树形菜单
前端·javascript·jquery
wen__xvn8 分钟前
算法基础集训第19天:广度优先搜索
算法·宽度优先
这就是佬们吗11 分钟前
力扣---leetcode48
java·笔记·后端·算法·leetcode·idea
qq_3380329221 分钟前
Vue/JS项目的package.json文件 和java项目里面的pom文件
java·javascript·vue.js·json
薛不痒26 分钟前
项目:矿物分类(训练模型)
开发语言·人工智能·python·学习·算法·机器学习·分类
月明长歌26 分钟前
Selenium中隐式等待(Implicit Wait)和显式等待(Explicit Wait)的区别
前端·javascript·selenium
姜太小白28 分钟前
【前端】JavaScript字符串执行方法总结
开发语言·前端·javascript