给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

func lengthOfLongestSubstring(s string) int {
    var Hash map[rune]int
    Hash = make(map[rune]int)
    var max int = 0
    var length int = 0
    for k, v := range s {
        length++
        if i, ok := Hash[v]; ok{
            if k - i < length{ //!重要的判断
                length = k - i
            }
        }
        Hash[v] = k
        if max < length{
            max = length
        }
    }
    return max 
}

记录上一次字母出现的位置,并进行比较。

考虑字符串只有大小写的情况下,可以将哈希表替换为长度为26*2的数组,减少空间复杂度。