leetcode3. Longest Substring Without Repeating Characters
Given a string s, find the length of the longest
substring
without repeating characters.
Example 1:
Input: s = “abcabcbb”
Output: 3
Explanation: The answer is “abc”, with the length of 3.
Example 2:
Input: s = “bbbbb”
Output: 1
Explanation: The answer is “b”, with the length of 1.
Example 3:
Input: s = “pwwkew”
Output: 3
Explanation: The answer is “wke”, with the length of 3.
Notice that the answer must be a substring, “pwke” is a subsequence and not a substring.
Constraints:
0 <= s.length <= 5 * 104
s consists of English letters, digits, symbols and spaces.
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
left = 0
right = 0
res = 0
while right<len(s):
char = s[right] # 左闭右闭,因此直接上来就将right的char纳入窗口中
while char in s[left:right]: # 判断新纳入的char是否与窗口之前的元素有重复
left += 1 # 有就收缩窗口
res = max(res, right-left+1) # 每部比较一下窗口长度与最值
right += 1 # right始终前行保障窗口不断在滑动
return res # 返回最值