无重复字符的最长子串

这道题采用滑动窗口的思路来求解,维护一个left,right窗口,保证窗口内始终没有重复的字符,记录窗口的最大长度。

具体而言:

① 初始化一个字典,值是字符,键是上一次出现的索引。右指针right逐个向右遍历字符串,拿到当前字符c

②若这个字符出现过,并且上次出现的索引在窗口内部,说明有重复字符,此时为了将重复字符剔除出窗口,将左指针跳到重复字符的下一个位置。

若字符没有出现过,或者即使出现过但是没有在窗口内,则左指针不动

③无论左指针是否移动,都要更新字典,保存当前字符的最新下标

④计算当前窗口长度

总的来说,这个问题的核心在于双指针,时间复杂度是O(n)。

相关推荐
Tsuki_tl2 天前
【优选算法 — 双指针】经典例题题解+算法总结
算法·蓝桥杯·力扣·刷题·双指针·1024程序员节·优选算法
蛋蛋的就会顺顺的12 天前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
浅念-12 天前
动态规划:线性DP——多状态DP与子数组专题笔记
c++·笔记·算法·leetcode·职场和发展·动态规划·力扣
蛋蛋的就会顺顺的20 天前
hot100——二叉树
java·数据结构·算法·leetcode·力扣
蛋蛋的就会顺顺的25 天前
hot100——矩阵
java·数据结构·算法·leetcode·力扣
语戚1 个月前
力扣 1621. 大小为K的不重叠线段的数目:动态规划(Java 实现)
java·算法·leetcode·动态规划·力扣·dp
我不会起名字3221 个月前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
_Narcissus_2 个月前
单调栈笔记及例题详解
数据结构·c++·笔记·算法·力扣·单调栈·洛谷
_Narcissus_2 个月前
链表算法题和静态链表
数据结构·c++·笔记·算法·链表·ai·力扣