mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-17 07:26:27 +00:00
57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
"""
|
|||
|
|
3. Longest Substring Without Repeating Characters
|
||
|
|
Difficulty: Medium
|
||
|
|
https://leetcode.com/problems/longest-substring-without-repeating-characters/
|
||
|
|
|
||
|
|
──────────────────────────────────────────────────
|
||
|
|
|
||
|
|
Given a string s, find the length of the longest substring without
|
||
|
|
duplicate characters.
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
Example 1:
|
||
|
|
|
||
|
|
Input: s = "abcabcbb"
|
||
|
|
Output: 3
|
||
|
|
Explanation: The answer is "abc", with the length of 3. Note that
|
||
|
|
"bca" and "cab" are also correct answers.
|
||
|
|
|
||
|
|
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 <= 10^5
|
||
|
|
|
||
|
|
• s consists of English letters, digits, symbols and spaces.
|
||
|
|
"""
|
||
|
|
|
||
|
|
|
||
|
|
class Solution:
|
||
|
|
def lengthOfLongestSubstring(self, s: str) -> int:
|
||
|
|
left = 0
|
||
|
|
ans = 0
|
||
|
|
seen = set()
|
||
|
|
for right, c in enumerate(s):
|
||
|
|
while c in seen:
|
||
|
|
seen.remove(s[left])
|
||
|
|
left += 1
|
||
|
|
seen.add(c)
|
||
|
|
ans = max(ans, right - left + 1)
|
||
|
|
|
||
|
|
return ans
|