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

力扣-无重复字符的最长子串

1.题目描述

2.题目链接

LCR 016. 无重复字符的最长子串 - 力扣(LeetCode) 

3.题目解析

本题中我们还是使用滑动窗口来解决。

那么为什么使用滑动窗口来解决呢?

对于这样一个数组,我们定义双指针都指向数组第一个元素。left表示无重复字符的最长子串的起始位置,right遍历数组表示无重复字符的最长子串的结束位置。

对于这种需要去重的问题,我们通常的解法是定义1个HashSet,把left到right之间的元素都存入HashSet中,如果发现HashSet中已经包含了right下标的元素,就把left指针移动到重复元素的位置。 

同时,left也不必再从right下标开始遍历,直接从left+1位置开始遍历即可。

不断更新length,也就是取原始length和right-left+1的最小值,直到right遍历完数组,返回length即可。

我们分析问题发现,全部过程中,left和right双指针都无需回退,所以我们不使用普通双指针,而是使用滑动窗口。 

4.代码细节

1) set的泛型类型

 Set<Character>set=new HashSet<>();

String类型取下标得到的是char类型,所以我们定义set的泛型应该是Character(注意不是char)。

2)加入set中

无论right元素是否在哈希表中,我们都应该把right下标的元素添加到哈希表中,因为即使right下标的元素存在于哈希表中,我们后续也会通过移动left指针至重复元素的下一位。

 set.add(s.charAt(right));

http://www.dtcms.com/a/205677.html

相关文章:

  • 手机入网时长查询接口:精准风控与用户运营的智能利器
  • 深入理解 PlaNet(Deep Planning Network):基于python从零实现
  • ffmpeg 转换视频格式
  • 【MySQL成神之路】MySQL插入、删除、更新操作汇总
  • 掌握正则表达式:从基础语法到工程实践
  • 使用gradio创建LLM模型聊天Demo
  • 如何在 Mac M4 芯片电脑上卸载高版本的 Node.js
  • 【论文阅读】——AN EXPRESSIVE REPRESENTATION OF GENERAL 3D SHAPES
  • 网页 CSS美化(详解)
  • 机器学习圣经PRML作者Bishop20年后新作中文版出版!
  • python 绘制3D平面图
  • 【前端】每日一道面试题4:什么是CSS容器查询(Container Queries)?与媒体查询有何区别?
  • CSS:vertical-align用法以及布局小案例(较难)
  • Spark SQL、Hive SQL运行流程解析及对比
  • Linux环境基础开发工具->vim
  • Paimon和Hive相集成
  • Java的Filter与Spring的Interceptor的比较
  • vim以及vi编辑器常用快捷键指令
  • DDS与PLL技术
  • [Harmony]实现JSON与类的双向转换
  • OpenCV CUDA模块图像过滤------用于创建一个最小值盒式滤波器(Minimum Box Filter)函数createBoxMinFilter()
  • 第三十二天打卡
  • FFmpeg 超级详细安装与配置教程(Windows 系统)
  • 高等数学-积分
  • Ubuntu18.04安装ros
  • PG Craft靶机复现 宏macro攻击
  • flask允许跨域访问如何设置
  • Android 内存溢出(OOM)的 Kotlin 排查与优化指南
  • 【Java多态】:灵活编程的核心
  • 当AI遇上科研:北大“科学导航”重塑学术探索全流程