func lengthOfLongestSubstring(s string) int {
if len(s) <= 1 {
return len(s)
}
start, maxL := 0, 0
hash := [128]int{}
for end := 0; end < len(s); end++ {
c := s[end]
i := int(c)
mid := hash[i]
if mid != 0 || mid == 0 && end != 0 && s[0] == c {
L := end - start
if L > maxL {
maxL = L
}
if start < mid + 1 {
start = mid + 1
}
}
hash[i] = end
}
L := len(s) - start
if L > maxL {
return L
}
return maxL
}