Length of Longest Substring


def lengthOfLongestSubstring(s: str) -> int:
    char_index = {} # Stores {character: index}
    next_index = 0
    max_length = 0

    for index in range(len(s)):
        char = s[index]
        if char in char_index and char_index[char] >= next_index:
            next_index = char_index[char] + 1
        char_index[char] = index
        max_length = max(max_length, index - next_index + 1)

    return max_length

s = "abcabcbb"
lengthOfLongestSubstring(s)
3