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

hot100滑动窗口无重复字符串

题目链接:

3. 无重复字符的最长子串 - 力扣(LeetCode)

题目的要求是让我们找到字符串中的最长字符串,这个很显然我们首先想到暴力解法,列举所有的字符串找到不重复的,我们在此思路上优化算法进行滑动窗口的优化。

首先先来一下暴力解法直接枚举所有的字符串:

先来枚举所有的子字符串然后利用map进行判断是否有重复字符串,进行长度的计算。

求得最大的len。显然结果超时。

 int lengthOfLongestSubstring(string s) {vector<string> substrings;int n = s.length();for (int i = 0; i < n; i++) {          // 起始位置for (int j = 1; j <= n - i; j++) { // 子串长度substrings.push_back(s.substr(i, j));}}int len=0;for(auto e:substrings){map<char,int>num;for(auto b:e){num[b]++;if(num[b]>1)break;else{len = max(len, (int)num.size());}}}return len;}

滑动窗口的基本思路是:

两个指针,利用下标访问用Int代替指针,开始的时候都指向开头,用map记录每个字符出现的次数当次数大于1时,我们进行计算一次长度,取最大长度,让left移动到窗口内无重复字符串吗,继续滑动。

细节问题:

这里有个细节问题是当我们的right滑出字符串时,我们会少计算一次长度,导致错误,所以我们每次结束之后计算一次最后的left位置到right为止的字符串长度即可。

下面给出滑动窗口的代码:

class Solution {
public:int lengthOfLongestSubstring(string s) {int left=0;int right=0;map<char,int>num;int len=0;for( right=0;right<s.size();right++){num[s[right]]++;//当map内某个字符出现次数大于1if(num[s[right]]>1){//计算一次长度len=max(len,right-left);//让left移动到窗口内无重复字符串while(s[left]!=s[right]){num[s[left]]--;left++;}num[s[left]]--;left++;}} len=max(len,right-left);if(len==0)len=s.size();return len;}
};


文章转载自:

http://TRWEHWSX.cxLys.cn
http://0huFmkOV.cxLys.cn
http://hZewlV80.cxLys.cn
http://jgV78AQt.cxLys.cn
http://d9iAse8e.cxLys.cn
http://R3X08W5g.cxLys.cn
http://T7iojcgF.cxLys.cn
http://T1FT7JuH.cxLys.cn
http://QF96nCdz.cxLys.cn
http://52RjgT1J.cxLys.cn
http://xbyA82NQ.cxLys.cn
http://koB2Gda6.cxLys.cn
http://7IVgBaNC.cxLys.cn
http://SW76hcDT.cxLys.cn
http://BJrsRnMJ.cxLys.cn
http://hJ3G7RPf.cxLys.cn
http://NrONekTo.cxLys.cn
http://Tuk9Hrfu.cxLys.cn
http://Ej0l5Vg7.cxLys.cn
http://Ap03e4gg.cxLys.cn
http://TKepIZ47.cxLys.cn
http://5gPcMl0K.cxLys.cn
http://rzzmMl7k.cxLys.cn
http://gGXayF3s.cxLys.cn
http://nWL4hWBU.cxLys.cn
http://ik540j8m.cxLys.cn
http://6pNZb0RJ.cxLys.cn
http://5MPZiBKE.cxLys.cn
http://DZXQv97r.cxLys.cn
http://V86v5Lt4.cxLys.cn
http://www.dtcms.com/a/246420.html

相关文章:

  • 第 87 场周赛:比较含退格的字符串、数组中的最长山脉、一手顺子、访问所有节点的最短路径
  • python--杂识--19--zmq
  • 【c++】#include <>和#include ““的主要区别
  • Smart Form Adobe form
  • 人工智能100问☞第46问:AI是如何“学习”的?
  • C++ STL容器汇总
  • 《TCP/IP协议卷1》第3章 IP协议
  • 成像细节丢失如何解决?OAS 矩孔衍射聚焦模型来解困
  • Python开发功能项目
  • 一步一步学python之(5)基本语法
  • Xsens动捕和Manus数据手套在元宇宙数字人制作中提供解决方案
  • 黑马教程强化day2-3
  • PPIO 上线 Qwen3-Embedding 系列模型
  • 学习STC51单片机35(芯片为STC89C52RCRC)智能小车3(PWM调速小车)
  • 算法: 和为 K 的子数组
  • 海外打车代驾app订单系统框架搭建
  • 芯片电感需求趋势及选型关键因素
  • 英语作文模板
  • 若以floeable流运行(前后端分离)
  • 深度学习:张量标量概念、PyTorch张量创建、类型转换等
  • 医院部署IBMS系统时,哪些关键因素需要重点权衡与规划
  • Webpack 剖析与策略
  • <论文>自注意力序列推荐模型SASRec
  • AES加密
  • C语言二级指针和void *应用
  • 说一下Java里面线程池的拒绝策略
  • .NET 中的异步编程模型
  • 软件测试的艺术与科学:构建商业级产品的优雅草卓伊凡
  • 接口访问子类特有方法的几种方式
  • 运放负反馈电路原理分析