【算法专题突破】滑动窗口 - 找到字符串中所有字母异位词(14)

简介: 【算法专题突破】滑动窗口 - 找到字符串中所有字母异位词(14)

1. 题目解析

题目链接:438. 找到字符串中所有字母异位词 - 力扣(Leetcode)

这道题很好理解,就是找出从不同位置开始的所有异位词。

2. 算法原理

那我们该如何快速判断是否是异位词呢?

因为异位词的字符种类和数量是一样的,用哈希表就可以很容易的比较。

思路和代码都还是比较简单的:

我们直接维护一个定长的窗口,

然后通过把字符插入哈希计数,然后每走一步判断是否是异位词即可。

3. 代码编写

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        unordered_map<char, int> win;
        unordered_map<char, int> cmp;
        vector<int> ans;
        for(auto e : p) cmp[e]++;
        int left = 0, right = 0;
        while(right < s.size()) {
            win[s[right++]]++;
            if(right - left > p.size()) {
                win[s[left]]--;
                if(win[s[left]] == 0) win.erase(s[left]);
                left++;
            }
            if(win == cmp) ans.push_back(left);
        }
        return ans;
    }
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

相关文章
|
5天前
|
算法
【算法】滑动窗口——最大连续1的个数
【算法】滑动窗口——最大连续1的个数
|
5天前
|
算法
【算法】滑动窗口——将x减到0的最小操作数
【算法】滑动窗口——将x减到0的最小操作数
|
5天前
|
算法 容器
【算法】滑动窗口——串联所有单词的子串
【算法】滑动窗口——串联所有单词的子串
|
5天前
|
算法
【算法】滑动窗口——最小覆盖子串
【算法】滑动窗口——最小覆盖子串
|
5天前
|
算法
【算法】滑动窗口——找到字符串中所有字母异位词
【算法】滑动窗口——找到字符串中所有字母异位词
|
5天前
|
算法
【算法】滑动窗口——无重复字符的最长子串
【算法】滑动窗口——无重复字符的最长子串
|
3天前
|
算法 Java
掌握算法学习之字符串经典用法
文章总结了字符串在算法领域的经典用法,特别是通过双指针法来实现字符串的反转操作,并提供了LeetCode上相关题目的Java代码实现,强调了掌握这些技巧对于提升算法思维的重要性。
|
5天前
|
算法
【算法】滑动窗口——水果成篮
【算法】滑动窗口——水果成篮
|
6天前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真
|
5天前
|
机器学习/深度学习 算法 定位技术
MATLAB - 遗传算法(GA)求解旅行商问题(TSP)
MATLAB - 遗传算法(GA)求解旅行商问题(TSP)
11 3

热门文章

最新文章