当前位置: 首页 > news >正文

无重复字符的最长子串_优选算法(C++)滑动窗口

网页直达:

https://leetcode.cn/problems/wtcaE1

题目分析:

1.字串VS子数组,都是连续的一段,找到没有重复的最小的一段.

解法一:暴力枚举+哈希表(判断字符是否重复出现)(O(N^2))

解法二:滑动窗口(其实是暴力枚举的优化)+哈希表

同样的我们来用图像来展现其过程:

我们简单来说明这是为什么:

其实就象一个窗口滑来滑去,在本题目中,一旦一段重复就滑动另一端,而不重新重头遍历,就会减少枚举的次数.

代码实现:

class Solution {
public:int lengthOfLongestSubstring(string s) {int hash[128]={0};//使用数组来模拟哈希表int left=0,right=0,n=s.size();int ret=0;while(right<n){hash[s[right]]++;//进入窗口while(hash[s[right]]>1){hash[s[left++]]--;//出窗口}ret=max(ret,right-left+1);//更新结果right++;//让下一个元素进入窗口}return ret;}
};

我们简单介绍一下哈希表:

哈希表(Hash Table),也叫散列表,是一种高效的数据结构,核心思想是通过「哈希函数」将数据的「键(Key)」映射到对应的「值(Value)」的存储位置,从而实现快速的插入、查找和删除操作。

这里我们用数组模拟实现了哈希表:我们来说明其中一个过程:

在前面hash数组里面已经进了一个a了,     执行hash[s[right]]++,    s[right]就是a,变成hash[a]++,就是表示一个a,在入一个a就变成2,就重复了,此时滑动窗口,让重复的元素出去,即left++;

http://www.dtcms.com/a/418625.html

相关文章:

  • 提升雾化片性能,关键是精密测量盲孔尺寸
  • Flannel工作原理-Flannel故障案例-镜像拉取策略-secret对接harbor及ServiceAccount实战
  • GitLab高危漏洞可致实例崩溃(CVE-2025-10858 和 CVE-2025-8014)
  • 中铁建设投资集团有限公司网站自己公司怎样做免费的网站
  • 安卓13_ROM修改定制化-----修改rom 实现支持原生安装器 破除厂商定制限制
  • android 字符串工具类(兼容 Android 16+ / API 16,无报错版)
  • 9.28 深度学习10
  • 数据安全合规行业实战解析:金融、医疗与智能网联汽车的破局之道
  • 汽车全景天窗生产线解决方案 - SNK施努卡
  • 汽车地带AutoZone EDI需求分析及对接指南
  • 如何给自己网站做反链家在深圳罗湖
  • 云手机在电商行业中的优势都有哪些
  • 微信小程序入门学习教程,从入门到精通,微信小程序页面制作(2)
  • 漳州本地网站宝安网站开发
  • Pytest框架速成
  • C++设计模式之结构型模式:代理模式(Proxy)
  • 八股已死、场景当立(分布式ID篇)
  • C++指针笔试题1
  • 中英双语 网站 模板网站建设项目验收单
  • 【centos生产环境搭建(二)redis安装】
  • 四川移动网站建设网架报价明细表
  • 网站设计思路WordPress客户端
  • 做试玩网站网站快速排名技术
  • Day30_【NLP 自然语言处理(0)—入门】
  • springboot 配置 HikariDataSource 连接池信息
  • identity mapping kernel image mapping
  • Docker操作命令
  • iOS 26 能耗检测实战指南,升级后电池掉速是否正常 + KeyMob + Instruments 实时监控 + 优化策略
  • perl踩坑系列===正则表达式第2坑---split中的“或”操作符
  • 苹果iOS 26正式版系统性能深度测试:续航、信号、流畅度详细解析