From 217e899281e637aa4f1bb55db603bb07eed097d7 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Tue, 25 Aug 2026 13:18:35 -0400 Subject: [PATCH] =?UTF-8?q?feat(work):=20add=20longest=E2=80=91substring?= =?UTF-8?q?=E2=80=91without=E2=80=91repeating=E2=80=91characters=20solutio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-substring-without-repeating-characters.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 work/Medium/Hash Table/3.longest-substring-without-repeating-characters.py diff --git a/work/Medium/Hash Table/3.longest-substring-without-repeating-characters.py b/work/Medium/Hash Table/3.longest-substring-without-repeating-characters.py new file mode 100644 index 0000000..0013fac --- /dev/null +++ b/work/Medium/Hash Table/3.longest-substring-without-repeating-characters.py @@ -0,0 +1,56 @@ +""" +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