C++速通LeetCode中等第6题-找到字符串中所有字母异位词(滑动窗口最详细代码注释)

ops/2024/9/22 23:54:13/

 滑动窗口法:

class Solution {
public:vector<int> findAnagrams(string s, string p) {unordered_map<char,int> need,window;for(char c : p) need[c]++;int left = 0,right = 0;int valid = 0;vector<int> res;//窗口数据更新while(right < s.size()){char c = s[right];right++;//先判断新来的在不在要求的字串中,不在的话计数不变if(need.count(c)){window[c]++;//再判断新来的字符计数是否满足条件了,满足条件数则valid++if(window[c] == need[c]){valid++;}}//子循环判断左窗口是否需要收缩,right-left就是当前窗口大小,因为right++导致窗口区间是[left,right)while(right - left >= p.size()){//当窗口符合条件时,把起始索引加入res,记录答案if(valid == need.size()){res.push_back(left);}char d = s[left];left++;//收缩后,对窗口计数更新//先判断舍弃的在不在要求的子串中,不在的话计数不变if(need.count(d)){   //再判断舍弃的字符计数是否满足条件了if(window[d] == need[d]){valid--;}window[d]--;//这里window一定要在判断后--,跟上面右移的时候反过来对称,右移是先++}}}return res;}
};


http://www.ppmy.cn/ops/114479.html

相关文章

面向对象程序设计——set容器の简析

1.set的介绍 • 序列式容器和关联式容器 • 我们已经接触过STL中的部分容器如&#xff1a;string、vector、list、deque、array、forward_list等&#xff0c;这些容器统称为序列式容器&#xff0c;因为逻辑结构为线性序列的数据结构&#xff0c;两个位置存储的值之间⼀般没有紧…

android 14分屏实战之小米su7的3分屏实现方案讨论及线索征集

背景&#xff1a; hi&#xff0c;粉丝朋友们&#xff1a; 近来有学员朋友询问到了马哥一个问题关于小米su7的分屏实现方案问题&#xff0c;具体小米su7的实现现象如下&#xff1a; 具体源头视频详细地址&#xff1a;https://www.bilibili.com/video/BV1UK421a7iB 针对小米su…

three.js shader 实现天空中白云

three.js shader 实现天空中白云 预览&#xff1a; https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idwhiteCloud 更多案例 可见 预览&#xff1a; https://threehub.cn import * as THREE from "three"; import { OrbitControls …

基于协同过滤+python+django+vue的音乐推荐系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

Facebook运营:账号类型有哪些?有必要用静态住宅IP吗?

Facebook作为月活跃用户数高达几十亿的社交媒体平台&#xff0c;一直不断有新用户选择加入。从个人用户的生活分享到企业用户的商务宣传推广&#xff0c;Facebook提供各大功能和模块来满足用户需求。相应的&#xff0c;用户也需要了解平台特点来进行相应的操作。本文从账号类型…

windows安装docker 本地打包代码

参考文章1&#xff1a;https://gitcode.csdn.net/65ea814b1a836825ed792f4a.html 参考文章2&#xff1a; Windows 安装docker&#xff08;详细图解&#xff09;-CSDN博客 一 下载 Docker Desktop 在官网上下载 Docker Desktop&#xff0c;可以从以下链接下载最新版本&#x…

Linux文件IO(五)-三种进程退出方法及空洞文件

1.三种进程退出方法 return 当程序在执行某个函数出错的时候&#xff0c;如果此函数执行失败会导致后面的步骤不能在进行下去时&#xff0c;应该在出错时终止程序运行&#xff0c;不应该让程序继续运行下去&#xff0c;那么如何退出程序、终止程序运行呢&#xff1f;有过编程…

2024年华为杯中国研究生数学建模竞赛B题(WLAN组网中网络吞吐量建模)思路

问题 1:信道容量模型的建立 背景 WLAN(无线局域网)的吞吐量与其信道容量密切相关,而信道容量是指在给定的信号与噪声比 (SNR) 下,信道能够传输的最大数据速率。香农公式为信道容量提供了理论上限: C = B log ⁡ 2 ( 1 + S N ) C &