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

滑动窗口——无重复字符最长的字串

题目:

子字符串,我们也可以看成子数组。

题意不难理解,这个题我们暴力枚举的思路是把每一个字符遍历存到hash桶中,如果放两次就进行结果更新。

但这个题我们有更优化的方法,利用数组代替hash(重点不在这!!)。我们用滑动窗口的原理(同向双指针),先让left和right指向头,然后判断right所对应的数组下标是否为1(利用标记来达到桶的效果初始全为0),如果为0则标记为1,right++;如果为大于1,先更新结果,left++,然后right++,这里right不重新回到left再遍历是我们已经能证明二者之间一定无重复字符了。直到right走到尾。

int Solution(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;
}

 

注意一下代码里的第二个while为什么不是if。因为我们要避开那种相同字符连续的情况(比如abbcde)这样的话如果我们使用if就无法实现让重复字符的hash--。即确保[left, right]之间至多有一个相同字符(无论何时)。

http://www.xdnf.cn/news/4437.html

相关文章:

  • 分布式-基于数据库排他锁
  • 文章记单词 | 第69篇(六级)
  • windows安装micromamba
  • SimpleMindMap:一个支持AI的思维导图软件
  • 电能质量监测A级与S级的区别详解
  • LVS中的DR模式,直接路由模式
  • 大模型Agent技术全景解析:架构演进、场景适配与关键技术拆解
  • 2025ISCC练武校级赛部分题解WP
  • Flink + Kafka 数据血缘追踪与审计机制实战
  • LeetCode383_赎金信
  • Mac中Docker下载与安装
  • [学习]RTKLib详解:ppp.c与ppp_ar.c
  • 如何保证Kafka生产者的消息顺序性? (单分区内有序,需确保同一Key的消息发送到同一分区)
  • 网站网页经常 400 错误,清缓存后就好了的原因剖析
  • 【JMeter技巧】GET请求如何传递Body参数?版本兼容性详解场景需求
  • 风车 AI 翻译如何免费解决跨境电商图片翻译难题
  • 机器学习——逻辑回归ROC练习
  • Milvus 向量数据库详解与实践指南
  • OSCP - Proving Grounds - Sumo
  • powershell批处理——io校验
  • 力扣刷题Day 37:LRU 缓存(146)
  • 7系列 之 ISERDESE2
  • 准确---Typora配置Gitee图床并实现自动图片上传
  • 【上位机——MFC】序列化机制
  • 使用 pgrep 杀掉所有指定进程
  • 【Linux系列】如何区分 SSD 和机械硬盘
  • idea连接mongodb配置schemas
  • 【基础篇】prometheus热更新解读
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的分销价格管控机制研究
  • TCGA数据库临床亚型可用!贝叶斯聚类+特征网络分析,这篇 NC 提供的方法可以快速用起来了!