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

力扣hot100——无重复字符最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

解法思路:

         // 滑动窗口:同侧出发,检测右指针元素,当set中没有这个元素就把右指针元素加入,同时右指针右移

        // 如果存在则表示这个窗口(左右指针之间)出现重复,则要移动;窗口移动就是左指针右移动,同时删除set中左指针的元素

        // 相当于换下一个子串;如果是字串的话,就删除右指针元素,相当于就是set中存储的是不连续的但是不同的字母

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        // 滑动窗口:同侧出发,检测右指针元素,当set中没有这个元素就把右指针元素加入,同时右指针右移
        // 如果存在则表示这个窗口(左右指针之间)出现重复,则要移动;窗口移动就是左指针右移动,同时删除set中左指针的元素
        // 相当于换下一个子串;如果是字串的话,就删除右指针元素,相当于就是set中存储的是不连续的但是不同的字母 

        unordered_set<char> str_set; // 存储元素
        int left = 0, right = 0 ,str_length = 0, result = 0;
        while(right < s.size()){
            if(str_set.find(s[right]) != str_set.end()){ // 存在
                str_set.erase(s[left]); // 移除这个元素  这里如果擦除右指针的元素则可用于查找最长 字串
                ++left;
                --str_length;
            }else{
                str_set.insert(s[right]);
                ++right;
                ++str_length;
            }
            result = max(str_length,result);
        }
        
        
        return result;

        
    }
};

相关文章:

  • 自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone
  • 解决 WSL Ubuntu 中 /etc/resolv.conf 自动重置问题
  • Redis如何解决热Key问题
  • AcWing 1236. 递增三元组(蓝桥杯C++ AB辅导课)
  • C语言流程控制学习笔记
  • 特力康输电线路杆塔倾斜智能监测装置:创新技术如何提升电网安全
  • 《千恋万花》无广版手游安卓苹果免费下载直装版
  • React之旅-02 创建项目
  • python: SQLAlchemy (ORM) Simple example using SQLite
  • 2023年河北省职业院校技能大赛网络系统管理赛项样题解法
  • 汽车零部件工厂如何通过工业一体机实现精准控制
  • “深入浅出”系列之C++:(8)libevent 库
  • 机器学习小项目之加利福尼亚房价数据分析
  • 【Spring详解三】默认标签的解析
  • BuildFarm Worker 简要分析
  • Git命令行入门
  • 【数据分析】通过个体和遗址层面的遗传相关性网络分析
  • 前端面试题-异步任务队列控制
  • 叠焊和平面焊
  • Mongoose 详解
  • 男子退机票被收90%的手续费,律师:虽然合规,但显失公平
  • 长沙查处疑似非法代孕:有人企图跳窗,有女子被麻醉躺手术台
  • 中国目的地·入境游简报006|外国网红游中国启示录
  • 巴防空系统击落印度无人机,印称巴方违反停火协议
  • 云南多地突查公职人员违规饮酒:公安局门口开展酒精吹气测试
  • 重庆荣昌出圈背后:把网络流量变成经济发展的增量