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

相关推荐
zzzzzz3101 小时前
看 react-bits,不要只看“酷炫”:一套阅读动画交互组件库的框架
javascript·react.js·动效
香芋芋圆9 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
INS_KF9 小时前
【编程笔记】成员函数中两个 const 的区别(const Data &getData() const;)
前端·javascript·笔记
淡海水9 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan10 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法
宿67410 小时前
vue3-async
前端·javascript·vue.js
Tisfy10 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
乐迪信息11 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
excel11 小时前
Nuxt + Twin CSS 中宽度超过屏幕时底部出现空白的原因与解决方案
前端·javascript
木井巳13 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法