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)