3. Longest Substring Without Repeating Characters
🟨 Medium
Question
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3 
Explanation: The answer is "abc", with the length of 3. Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.Example 3:
Input: "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3. 
             Note that the answer must be a substring, "pwke" is a subsequence and not a substring.Complexity
Time complexity: O(n)
Space complexity: O(1)
Code 
def lengthOfLongestSubstring(self, s: str) -> int:
    n = len(s)
    if n < 2: #no prepeating word when n < 2
        return n 
    res, tmp = "", "" #init result and tmp substring
    for i, c in enumerate(s):
        if c not in tmp: #simply add char if not include
            tmp += c
        else:
            idx = tmp.find(c) #find index of char in tmp
            tmp = tmp[idx+1:] + c
        res = tmp if len(tmp) > len(res) else res
    return len(res)Last updated
Was this helpful?