在滑动窗口中做记录 Longest Substring Without Repeating Characters
LeetCode 3
在一个字符串中寻找没有重复字母的最长子串
——如”abcabcbb”,则结果为”abc”
——如“bbbbb”,则结果为”b“
——如”pwwkew”,则结果为”wke”
解题步骤
s[i...j]
构成了一个滑动窗口
如果j+1
所指的字符,在当前这个子字符串中不存在(没有重复的元素),则j
向前滑动,并把其所指字符纳入子字符串中
直到j+1
遇到一个字符,是在子字符串中出现过的重复字符。此时j
停止滑动,记录下当前的长度,更新结果
此时i
,向前滑动直到窗口内,没有重复的字符。此时,j
又可以继续向前滑动
代码实现。
借助了visited来判断是否有重复的字符串
1 | def lengthOfLongestSubstring(s): |