滑动窗口_⽔果成篮找到字符串中所有字⺟异位词

⽔果成篮

904. 水果成篮 - 力扣(LeetCode)

相当于求数字种类不超过2的最长字字符串

我们先看一看例4.从第一个元素开始最长字符串3331,下一次从第二个位置数吗?没必要,因为只有当字符串中数字种类变为1时,字符串长度才可以增加。

这样我们可以用滑动窗口来解决

怎么判断字符串中数字种类是否变为1?
可以用哈希表map<int,int>里面存入数字的种类以及个数。当该种类的个数==0时,就可以删除它。

class Solution {
public:int totalFruit(vector<int>& f) {int left=0,right=0,len=0;unordered_map<int,int> hash;for(;right<f.size();right++){hash[f[right]]++;while(hash.size()==3){hash[f[left]]--;if(hash[f[left]]==0) hash.erase(f[left]);left++;}len=max(len,right-left+1);}return len;}
};

可以用数组代替哈希表,效率更高

class Solution {
public:int totalFruit(vector<int>& f) {int len=0;int hash[100001]={0};for(int left=0,right=0,k=0;right<f.size();right++){if(hash[f[right]]==0)k++;hash[f[right]]++;while(k>2){hash[f[left]]--;if(hash[f[left]]==0) k--;left++;}len=max(len,right-left+1);}return len;}
};

找到字符串中所有字⺟异位词

438. 找到字符串中所有字母异位词 - 力扣(LeetCode)

异位词 两个子串字母数一样,但顺序可以不一样。

思路一:遍历s每p.size()个字符和p比较是否相等。

建立哈希表h2存入p字符串,哈希表h中存放与p字符串等长的s的子字符串,比较h和h2是否相同,从第一个开始直到最后。

class Solution {
public:vector<int> findAnagrams(string s, string p) {unordered_map<char,int> h;vector<int> v={};for(auto o:p) h[o]++;unordered_map<char,int> h2;for(int i=0;i<p.size();i++){h2[s[i]]++;}for(int left=0,right=(int)p.size()-1;right<(int)s.size();){if(h2==h) v.push_back(left);h2[s[left]]--;if(h2[s[left]]==0)h2.erase(s[left]);left++;right++;h2[s[right]]++;}return v;}
};

思路二:我们没有必要每次都进行比较,我们可以用count记录h中有多少个有效字符,什么是有效字符?我们知道异位词 两个子串字母数一样,但顺序可以不一样。所以我们要保证h和h2中对应字母个数相同就可以,如果进入h的字符正好是缺少的字符count++,删除的字符如果不是多余的count--

比如说h2中有3个a 1个b h为空,进入一个a,count++,进入一个b,count++,再进入一个b,

此时h中b的个数>=h2的个数,count就不能++。

当count==p.size()时,就说明h==h2

class Solution {
public:vector<int> findAnagrams(string s, string p) {int h[26]={0};int h2[26]={0};vector<int> v;for(auto o:p){h2[o-'a']++;}int k=p.size();for(int right=0,left=0,count=0;right<s.size();right++){if(++h[s[right]-'a']<=h2[s[right]-'a']) count++;if(right-left+1>k){if(h[s[left]-'a']--<=h2[s[left]-'a']) count--;left++;}if(count==k) v.push_back(left);}return v;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444866.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm里debug时如何看到数据的维度

使用表达式计算&#xff08;Evaluate Expression&#xff09; 调试时&#xff0c;使用 PyCharm 的 “Evaluate Expression” 功能可以动态查看或修改数据。具体步骤如下&#xff1a; 在调试模式中按 Alt F8&#xff08;Windows&#xff09;或 Option F8&#xff08;Mac&…

机器学习 | 特征选择如何减少过拟合?

在快速发展的机器学习领域&#xff0c;精确模型的开发对于预测性能至关重要。过度拟合的可能性&#xff0c;即模型除了数据中的潜在模式外&#xff0c;还拾取训练集特有的噪声和振荡&#xff0c;这是一个固有的问题。特征选择作为一种有效的抗过拟合武器&#xff0c;为提高模型…

JAVA科技赋能共享台球室无人系统小程序源码

科技赋能共享台球室无人系统 —— 智慧台球新体验 &#x1f3b1; 科技引领&#xff0c;台球室迎来无人新纪元 在这个日新月异的科技时代&#xff0c;共享经济的浪潮席卷而来&#xff0c;为我们的生活带来了诸多便利。而今天&#xff0c;我要为大家介绍的&#xff0c;正是科技…

【高等代数笔记】线性空间(十九-二十四上半部分)

课程视频剪辑得太抽象了&#xff0c;一节课不能完整学完&#xff0c;拆的零零散散得。 3. 线性空间 3.19 满秩矩阵 【推论4】设 rank ( A ) r \text{rank}(\boldsymbol{A})r rank(A)r&#xff0c;则 A \boldsymbol{A} A的不为0的 r r r阶子式所在的列&#xff08;行&#x…

2.3MyBatis——插件机制

2.3MyBatis——插件机制 1.基本用法2.原理探究2.1加载过程2.2执行过程2.2.1 插件的执行点2.2.2 SQL执行的几个阶段2.2.3 如何梳理出执行流程 合集总览&#xff1a;Mybatis框架梳理 插件机制是一款优秀框架不可或缺的组成部分&#xff0c;比如spring、dubbo&#xff0c;还有…

链表(2)_两两交换链表中的节点_面试题

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 链表(2)_两两交换链表中的节点_面试题 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c;…

T11:优化器对比实验

T11周&#xff1a;优化器对比实验 **一、前期工作**1.设置GPU,导入库 **二、数据预处理**1.导入数据2.检查数据3.配置数据集4.数据可视化 **三、构建模型****四、训练模型****五、模型评估**六、总结 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&a…

【前端碎片记录】大文件分片上传

大文件分片上传&#xff0c;主要是为了提高上传效率&#xff0c;避免网络问题或者其他原因导致整个上传失败。 HTML部分没什么特殊代码&#xff0c;这里只写js代码。用原生js实现&#xff0c;框架中可参考实现 // 获取上传文件的 input框 const ipt document.querySelector(…

aws(学习笔记第五课) AWS的firewall SecurityGroup,代理转发技术

aws(学习笔记第五课) AWS的firewall– SecurityGroup&#xff0c;代理转发技术 学习内容&#xff1a; AWS的firewall– SecurityGroup代理转发技术 1. AWS的filewall– SecurityGroup 控制进入虚拟服务器的网络流量 通常的firewall(防火墙)配置 AWS上使用安全组进行网络流量…

息肉检测数据集 yolov5 yolov8适用于目标检测训练已经调整为yolo格式可直接训练yolo网络

息肉检测数据集 yolov5 yolov8格式 息肉检测数据集介绍 数据集概述 名称&#xff1a;息肉检测数据集&#xff08;基于某公开的分割数据集调整&#xff09;用途&#xff1a;适用于目标检测任务&#xff0c;特别是内窥镜图像中的息肉检测格式&#xff1a;YOLO格式&#xff08;边…

Transactional注解导致Spring Bean定时任务失效

背景 业务需要定时捞取数据库中新增的数据做数据处理及分析&#xff0c;更新状态&#xff0c;处理结束。而我们不能随意定义线程池&#xff0c;规定使用统一的标准规范来定义线程池。如在配置文件中配置线程池的属性&#xff1a;名称&#xff0c;线程核心数等&#xff0c;任务…

04-SpringBootWeb案例(中)

3. 员工管理 完成了部门管理的功能开发之后&#xff0c;我们进入到下一环节员工管理功能的开发。 基于以上原型&#xff0c;我们可以把员工管理功能分为&#xff1a; 分页查询&#xff08;今天完成&#xff09;带条件的分页查询&#xff08;今天完成&#xff09;删除员工&am…

Linux_kernel内核定时器14

一、内核定时器 1、内核定时器 使用方法&#xff1a; 2、系统时钟中断处理函数 1&#xff09;更新时间 2&#xff09;检查当前时间片是否耗尽 Linux操作系统是基于时间片轮询的&#xff0c;属于抢占式的内核 3&#xff09;jiffies 3、基本概念 1&#xff09;HZ HZ决定了1秒钟产…

OCP迎来新版本,让OceanBase的运维管理更高效

近期&#xff0c;OceanBase的OCP发布了新版本&#xff0c;全面支持 OceanBase 内核 4.3.2 及更低版本。新版本针对基础运维、性能监控、运维配置、外部集成等多个方面实现了 20余项的优化及强化措施&#xff0c;增强产品的易用性和稳定性&#xff0c;从而帮助用户更加高效地管理…

中国地级市生态韧性数据及城市生态韧性数据(2000-2022年)

一测算方式&#xff1a; 参考C刊《管理学刊》楚尔鸣&#xff08;2023&#xff09;老师的做法&#xff0c;城市生态韧性主要衡量一个城市在面临生态环境系统压力或突发冲击时&#xff0c;约束污染排放、维护生态环境状态和治理能力提升的综合水平。 参考郭海红和刘新民的研究&a…

Redis持久化机制(RDBAOF详解)

目录 一、Redis持久化介绍二、Redis持久化方式1、RDB持久化(1) 介绍(2) RDB持久化触发机制(3) RDB优点和缺点(4) RDB流程 2、AOF(append only file)持久化(1) 介绍(2) AOF优点和缺点(3) AOF文件重写(4) AOF文件重写流程 三、AOF和RDB持久化注意事项 一、Redis持久化介绍 Redis…

【小工具分享】下载保存指定网页的所有图片

一、保存百度首页所有的图片 先看一下保存的图片情况 二、思路 1、打开网页 2、获取所有图片 3、依次下载保存图片到指定路径 三、完整代码 from selenium import webdriver from selenium.webdriver.common.by import By b webdriver.Firefox() import urllib.request…

C++系统教程004-数据类型(03)

一 .变量 变量是指在程序运行期间其值可以发生改变的量。每个变量都必须有一个名称作为唯一的标识&#xff0c;且具有一个特定的数据类型。变量使用之前&#xff0c;一定要先进行声明或定义。 1.变量的声明和定义 C中&#xff0c;变量声明是指为变量提供一个名称&#xff0c…

嵌入式面试——FreeRTOS篇(七) 软件定时器

本篇为&#xff1a;FreeRTOS 软件定时器篇 一、软件定时器的简介 1、定时器介绍 答&#xff1a; 定时器&#xff1a;从指定的时刻开始&#xff0c;经过一个指定时间&#xff0c;然后触发一个超时事件&#xff0c;用户可以自定义定时器周期。 硬件定时器&#xff1a;芯片本…

基于差分进化灰狼混合优化的SVM(DE-GWO-SVM)数据预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 DE优化 4.2 GWO优化 5.完整程序 1.程序功能描述 基于差分进化灰狼混合优化的SVM(DE-GWO-SVM)数据预测算法matlab仿真&#xff0c;对比SVM和GWO-SVM。 2.测试软件版本以及运行结果展示…