当前位置: 首页 > 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://www.xdnf.cn/news/997525.html

相关文章:

  • 超简单部署离线语音合成TTS和语音识别
  • wpf 解决DataGridTemplateColumn中width绑定失效问题
  • 基于Django的购物系统
  • DevEco Studio 报错 “too many restarts of gpu-process (jcef)“
  • pyspark 初试
  • Spring 路由匹配机制详解:时间复杂度从 O(n) 降至 O(log n)
  • 【Zephyr 系列 20】BLE 模块产线测试系统设计:快速校验、参数写入、自动识别的完整方案
  • Package vs. Directory (包 vs. 目录)
  • HarmonyOS运动开发:打造便捷的静态快捷菜单
  • 以前在服务器启动了docker,现在不需要了,为了安全,去掉docker服务@Ubuntu
  • Linux 基本命令
  • GO后端开发内存管理及参考答案
  • 没有宝塔面板的服务器上的WordPress网站打包下载到本地?
  • 动态多目标进化算法:MOEA/D-SVR求解CEC2018(DF1-DF14),提供完整MATLAB代码
  • 数字图像处理与OpenCV初探
  • 机器学习 [白板推导](五)[支持向量机]
  • uni-app隐藏返回按钮
  • VAS5081电动工具专用3-8节串联电池监控芯片奇力科技
  • 深入理解常用依存关系标签
  • 常见的几种排序算法
  • ​​MPI + OpenMP 环境配置指南(Windows/Linux)​
  • 【C++】继承和派生
  • 【靶场】upload-labs-文件上传漏洞闯关
  • Java面试题020:一文深入了解微服务之负载均衡Feign
  • docker-Dockerfile 配置
  • EMS企业微电网能效管理 + IBMS智能化集成系统:双擎驱动企业绿色低碳转型
  • 快速搭建运行Django第一个应用—投票
  • JAVA_学习(IDEA
  • RT-Thread Studio 配置使用详细教程
  • linux基于内存实现jar文件搜索