找出最长的无重复字符串并返回长度
给定一个字符串,最长无重复字符串的长度
例子:“abc”, 返回3
例子:“wwabcdwf”,返回5
这里记录我的刷题思考,参考GitHub上的Jack_Cui的思路,原文地址:https://github.com/Jack-Cherish/LeetCode/blob/master/String/Medium/3.Longest%20Substring%20Without%20Repeating%20Characters.md
在这个解法里面,设置了longest记录最长字符串长度,left记录一个子字符串的长度的起始位置,temp{}字典用来存储当前已经遇见过的字符串
需要先写几个例子,梳理清楚规则
比如什么时候会重新开始计算,从起始位置开始,遍历字符,并记录存储,遇见了遍历过的字母就会开始重新计算,这个时候要把left位置进行更新
什么时候会不断进行对长度进行累加呢?
a、新的字符,以前没有遍历过的
b、以前遍历过,但是index在left点前面,可以视为新字符
注意这里为什么left = temp[each] + 1,因为需要对left位置进行不断准确更新,遇见重复元素,那么上一个重复元素就可以丢弃了,index +1进位计算
本文仅仅记录我的刷题理解和思考,感谢Jack Cui的分享