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

3. 无重复字符的最长子串(滑动窗口)

 思路

分解题意,我们需要找没有重复字符的最长字串,那我们会遇到什么问题,就是当我们遇到了重复字符的时候怎么处理,我们来讨论,围绕最长。当我们遇到一个重复的字符,说明我们要记录前面的字串长度,并且寻找下一个字串,那么现在问题变成,怎么找下一个字串,我们有的唯一的条件就是那个重复的字符,那是不是把前面这个重复字符删掉就行了,或者从前面这个重复的字符后面开始找。

例如

abcdefgaoplu;

这个字符串明显的我们只要把最开始的重复的字符串删掉就行。

abcdefgcoplu

这个字符串明显就是要把重复字符串前面的字符都删掉才行,那么我们是不是找到解决方法。

实现

我们可以设置两个标记变量,通常称为指针。

int i=0;

int j=0;

j不断向右移动,添加字符到一个容器里面。这个容器需要可以判断重复字符,那么我们使用哈希表map容器,map<char,int> mp;前面是字符后面是坐标。但是我们发现需要删除重复字符前面所有的字符,而且map删除元素需要键来判断,我们使用unordered_set<char> mp容器进行删除元素.每次删除开头元素,判断重复元素还存在没有。

while(i<j&&mp.count(s[i])!=0)

 {

        mp.easer(s[i]);

        i++;

}

i表示删到重复元素的位置.

代码

class Solution {
public:int lengthOfLongestSubstring(string s) {unordered_set<char> mp;int i=0;//左指针int maxx=0;for(int j=0;j<s.size();j++){while(i<j&&mp.count(s[j])!=0){mp.erase(s[i]);i++;}mp.insert(s[j]);maxx=max(maxx,j-i+1);}return maxx;}
};

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

相关文章:

  • 客户端建立一个连接需要占用客户端的端口吗
  • NHANES稀有指标推荐:HALP score
  • average per-pixel disparity error: EPE及不同距离值下的误差曲线
  • JavaScript基础-全局作用域
  • 《Python星球日记》 第53天:卷积神经网络(CNN)入门
  • DNS服务实验
  • 土耳其Koç大学指令驱动的智能综述,从文本表达到任务执行的系统探索
  • 王慧文产品课总结
  • @Transactional注解失效
  • 仿制药研发为何要上电子实验记录本?
  • 数据在内存中的存储
  • 配置高级相关
  • Open CASCADE学习|B 样条曲线拟合优化
  • 探秘 Canva AI 图像生成器:重塑设计创作新范式
  • vs python“““标记注释报错,vs使用自带环境安装 python第三方库
  • 每日一题洛谷T534125 合数c++
  • C# 方法(ref局部变量和ref返回)
  • 测试一下多模态提取图片中文字的能力
  • STM32F103单片机在不需要使用 JTAG 调试接口的情况下,释放引脚给其他功能使用。
  • 电网拓扑分析:原理与应用
  • Crewai Community Version(四)——Crew
  • Qt QCheckBox 使用
  • 【Java ee初阶】网络编程 TCP
  • 深度学习篇---姿态检测实现
  • 软考错题集
  • Java 23种设计模式 - 行为型模式11种
  • PostgreSQL 的 pg_collation_actual_version 函数
  • 【深度学习-Day 8】让数据说话:Python 可视化双雄 Matplotlib 与 Seaborn 教程
  • Kimball
  • Python 基础语法与数据类型(七) - 函数的定义与调用 (def, return)