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

力扣热门100题刷题笔记 - 3.无重复字符的最长子串

力扣热门100题 - 3.无重复字符的最长子串

题目链接:3. 无重复字符的最长子串

题目描述:

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

示例:

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

提示:

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

解题思路 (滑动窗口 哈希表):

使用两个指针 l 和 r 表示当前不含重复字符子串的左右边界,初始时都指向字符串的开头。
使用 HashSet 存储当前子串中的字符,以便快速检查字符是否重复出现。
不断移动右指针 r,并将对应字符加入 HashSet。如果发现重复字符,说明当前子串中有重复字符,需要移动左指针 l,并将对应字符从 HashSet 中移除,直到子串中再次不含重复字符为止。
在每一次长度增加时更新最大子串长度 maxLen,即 maxLen = maxLen > (r-l) ? maxLen : (r - l);。
时间复杂度:O(n) 在每一步操作中,l 和 r 指针都会向前移动,而 HashSet 的操作是常数时间的,因此整体复杂度为 O(n)。

代码:

class Solution {public int lengthOfLongestSubstring(String s) {HashSet<Character> hs = new HashSet<>();int len = s.length();int maxLen = 0;int l = 0;int r = 0;while(r < len){char c = s.charAt(r);if (hs.contains(c)){hs.remove(s.charAt(l));l++;}else {hs.add(c);r++;maxLen = maxLen > (r-l) ? maxLen : (r - l);}}return maxLen;}
}

在这里插入图片描述

http://www.lryc.cn/news/293758.html

相关文章:

  • 达梦数据库死锁排查与解决
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextClock组件
  • CICD注册和使用gitlab-runner常见问题
  • 关于Django部署
  • 计算机网络——01什么是InterNet
  • 刷存在感,Excel转Protobuf/Json通用配置文件
  • docker 开放tcp连接供idea等其他外部工具开放使用
  • 虚拟机(VMware)ubuntu16.04 直接连接网口设备 USRP 吊舱
  • 告别繁杂的状态管理:Zustand 的简洁之道
  • CentOS磁盘扩容
  • 【数据分享】1929-2023年全球站点的逐日降雪深度数据(Shp\Excel\免费获取)
  • golang网络编程day4
  • 为什么pgsql(内关联查询或者with字句时)会导致索引失效
  • 小程序 自定义组件和生命周期
  • asp.net 404页面配置、 asp.net MVC 配置404页面、iis 配置404页面,指定404错误页面,设置404错误页面
  • Docker存储空间清理
  • React16源码: React中NewContext的源码实现
  • 【Linux】【Shell】常用压缩和解压缩命令(超详细)
  • 【Java程序设计】【C00232】基于Springboot的抗疫物资管理系统(有论文)
  • 2023年全球软件开发大会(QCon上海站2023):核心内容与学习收获(附大会核心PPT下载)
  • 【Linux】Ext2 文件系统
  • studyNote-linux-shell-find-examples
  • 使用 Python 进行自然语言处理第 3 部分:使用 Python 进行文本预处理
  • Python新春烟花盛宴
  • 【QT+QGIS跨平台编译】之二十:【xerces+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 18.通过telepresence调试部署在Kubernetes上的微服务
  • QT 范例阅读:系统托盘 The System Tray Icon example
  • OpenAI Gym 高级教程——深度强化学习库的高级用法
  • K8sGPT 会彻底改变你对 Kubernetes 的认知
  • 计组学习笔记2024/2/4