首页 > 其他分享 >3. 无重复字符的最长子串 ---- 滑动窗口、无序集合存放比较

3. 无重复字符的最长子串 ---- 滑动窗口、无序集合存放比较

时间:2022-11-17 14:11:38浏览次数:43  
标签:子串 字符 maxStr ---- lookup 集合 滑动 最长

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

 

示例 1:

输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
  请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
 

提示:

0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        if(s.size() == 0) return 0; // 长度为0时, 返回0
        unordered_set<char> lookup; // 建立无序集合
        int maxStr = 0; // 设立最长字串
        int left = 0; // 左指针
        for(int i = 0; i < s.size(); i++){ // 遍历字符串
            while (lookup.find(s[i]) != lookup.end()){ // 如果集合里的值等于(末尾)新添加的值
                lookup.erase(s[left]); // 删除集合最左边的字符,直到整个集合没有相等值
                left ++; //指针++
            }
            maxStr = max(maxStr,i-left+1); // 判断是否更新最大值
            lookup.insert(s[i]); // 将字符添加进集合
    }
        return maxStr;
        
    }
};

 

标签:子串,字符,maxStr,----,lookup,集合,滑动,最长
From: https://www.cnblogs.com/slowlydance2me/p/16899303.html

相关文章

  • 【c&c++】链接静态库文件时的搜索路径
    经测试,链接静态库的时候静态库的搜索路径包括/lib;/lib64;/usr/lib;/usr/lib64/;/usr/local/lib;/usr/local/lib64, 静态库文件完整的搜索顺序:比如我们要生成的最终可......
  • 计算机网络:IEEE 802.11无线局域网
    1.无线局域网的组成无线局域网可分为两大类:有固定基础设施的无线局域网和无固定基础设施的移动自组织网络。所谓“固定基础设施”,是指预先建立的、能覆盖一定地理范围的固......
  • 智能仪表在水电桩行业应用
    背景随着这两年户外旅游大力发展,促使房车营地大规模增建,房车营地最主要的功能之一就是为驻扎下来的房车、私家车等提供水和电的补给,而水电桩正是发挥了这样的功能。由于人们......
  • Spring数据访问和数据访问层与业务或服务层之间的交互(二)
    2.DAO支持Spring中的数据访问对象(DAO)支持旨在使其易于使用以一致的方式访问数据访问技术(如JDBC、Hibernate或JPA)。这让您相当轻松地在上述持久性技术之间切换,它......
  • debian解决vim不能用鼠标进行复制粘贴
    1、获取root权限2、建立一个文件vimrc.local  在/etc/vim下。touch/etc/vim/vimrc.localvim/etc/vim/vimrc.local  添加如下内容,wq保存退出即可。其中注意每个vim版......
  • 智能仪表在铁塔行业应用
    应用场景可应用于基站的交直流配电箱及对基站内的动力设备进行数据采集和控制。功能1. 对多个回路进行全电参量测量,实现基站内各回路用电能耗的集中管理;2. 丰富的DI/DO输......
  • 【Logback+Spring-Aop】实现全面生态化的全链路日志追踪系统服务插件「Logback-MDC篇
    日志追踪日志追踪对于功能问题的排查和数据流转的路径分析时非常重要的,有了全链路日志追踪体系机制可以非常有效且快速的定位问题,但在多线程环境中,若没有相关成熟的框架的支......
  • 5款十分小众,却又非常好用的良心软件
    今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。1.杀毒软件——火绒安全软件首先说一下国产杀软之光,这是一款电脑安全......
  • 1.1 创建一个WCF应用程序服务
    第一步:引入System.ServiceModel.dll第二步定义一个WCF接口://定义接口[ServiceContract]interfaceIGetInfo{[OperationContract]D......
  • Spring数据访问和数据访问层与业务或服务层之间的交互(三)
    4.使用R2DBC访问数据R2DBC(“反应式关系数据库连接”)是一个社区驱动的规范工作,以使用反应模式标准化对SQL数据库的访问。4.1.软件包层次结构Spring框架的R2DBC抽象......