解题思路
通过字典的特性可以判定是否存在已有的字符没有就把字符和对应的下标存起来
通过双标记计算长度
1,两个标记都是从0开始,如果没有重复字符第二个标记一直向前走长度一直增加
2,如果在字典中出现字符那么第一个字符位置移动当前位置,再重复第一步操作
3,如果local没有重置过需要做+1处理
func lengthOfLongestSubstring(_ s: String) -> Int {
var dict = Dictionary<Character, Int>()
var count = 0
var length = 0
var local = 0
var isreset = false
for char in s {
let item = dict[char]
if item != nil{
if item! >= local {
local = item!
isreset = true
}
if count-local > length{
length = count-local
}
}else{
if !isreset {
if count-local+1 > length{
length = count-local+1
}
}else{
if count-local > length{
length = count-local
}
}
}
dict[char] = count
count += 1
}
return length
}复制代码