当前位置: 首页 > 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/news/313261.html

相关文章:

  • 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
  • Intel架构的基本知识
  • 我整理了一些关于【软考备考】的学习资料和大家一起分享、学习一下
  • 《 C++ 修炼全景指南:九 》打破编程瓶颈!掌握二叉搜索树的高效实现与技巧
  • STM32使用 :串口的接收与发送
  • 【RabbitMQ】RabbitMQ 概述
  • 在HTML中添加段落方法
  • 领域驱动DDD三种架构-分层架构、洋葱架构、六边形架构
  • ARM驱动学习之22 字符类GPIO
  • 智慧安防监控EasyCVR视频汇聚管理平台如何修改视频流分辨率?
  • 传输大咖44 | 云计算企业大数据迁移如何更安全高效?