Hash map tracks last index of each character. Jump left past duplicates.
function lengthOfLongestSubstring(s): seen = {} left = 0 maxLen = 0 for right in range(len(s)): char = s[right] if char in seen and seen[char] >= left: left = seen[char] + 1 seen[char] = right maxLen = max(maxLen, right - left + 1) return maxLen
time, space where is the charset size.