function lengthOfLongestSubstring(s: string): number {
if (s.length < 2) return s.length
let max = 0
let startIndex = 0
const map = new Map<string, number>([])
const len = s.length
for (let endIndex = 0; endIndex < len; endIndex++) {
const cur = s[endIndex]
if (map.has(cur)) startIndex = Math.max(map.get(cur), startIndex)
max = Math.max(max, endIndex - startIndex + 1);
map.set(cur, endIndex + 1)
}
return max
}