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

LeetCode[中等] 3. 无重复字符的最长子串

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

思路:滑动窗口,设置左右指针left与right,maxLength存储长度

利用HashSet性质,存储滑动窗口中的字符

如果没有重复的,那么right继续向右滑动,并将该字符添加进HashSet中;如果重复了,left向右滑动,并不断将字符移出数组。

完成一次判断之后,更新最长字串长度

public class Solution {
    public int LengthOfLongestSubstring(string s) {
        HashSet<char> set = new HashSet<char>();
        int left = 0, right = 0, maxLength = 0;
        int length = s.Length;
        while(right < length)
        {
            if(!set.Contains(s[right]))
            {
                set.Add(s[right]);
                right++;
            }
            else
            {
                set.Remove(s[left]);
                left++;
            }
            maxLength = Math.Max(maxLength, right - left);
        }
        return maxLength;
    }
}

复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串 s 的长度。滑动窗口的左右端点最多各遍历字符串 s 一次。

  • 空间复杂度:O(∣Σ∣),其中 Σ 是字符集。空间复杂度主要取决于哈希集合,哈希集合中每个字符最多出现一次。


http://www.kler.cn/a/313261.html

相关文章:

  • Zotero 6.0 安装包及安装教程
  • Mac intel 安装IDEA激活时遇到问题 jetbrains.vmoptions.plist: Permission denied
  • 微服务(二)
  • 【121. 买卖股票的最佳时机】——贪心算法/动态规划
  • Android中桌面小部件的开发流程及常见问题和解决方案
  • 什么是数字图像?
  • Java项目实战II基于Java+Spring Boot+MySQL的大型商场应急预案管理系统(源码+数据库+文档)
  • 【原创】java+springboot+mysql科研成果管理系统设计与实现
  • Vue.js 与后端配合:打造强大的现代 Web 应用
  • YoloV9改进策略:BackBone改进|EfficientFormerV2在YoloV9中的创新应用,精度与效率的完美平衡
  • fmql之ubuntu联网
  • 【 ACM独立出版,见刊后1个月检索!!!】第二届通信网络与机器学习国际学术会议(CNML 2024,10月25-27)
  • JS在线加密解密工具
  • 应用性能优化实践(三)减少丢帧卡顿
  • 无线麦克风哪个好,麦克风哪个品牌音质最好,领夹麦克风推荐
  • 可视化工具箱-Visualization Toolkit(VTK)
  • go语言中的数组指针和指针数组的区别详解
  • 【车载开发系列】APQP基本概念
  • IDEA2023.1添加java虚拟机启动参数,打开断言
  • 对接阿里asr和Azure asr
  • KMP算法的实现
  • How can I integrate OpenAI Whisper model into a Kotlin app?
  • 解决 iOS App Tracking Transparency 权限问题
  • windows下,用docker部署xinference,为什么老是提示localhost无法访问?
  • 图说几何学2300年重大错误:附着在直线z上的直线段必是z的一部分
  • WebServer:buffer