题目描述:
题解:
滑动窗口解法。
1.初始化left=0 longest=0。
2.right从1开始,当前窗口[left,right]对应的字符串段now为s[left:right],判断s[right]是否在now中存在,首先更新longest值,然后找到在now中对应的位置,left移动到该位置的下一个位置。
3.如果s[right]在now不存在,在其他情况不需要特殊处理,但如果此时right已经到s结尾的位置,需要更新longest值。(在longest和len(now)取最大值,加一是由于right只可以取到len(s)-1,并且now[left:right]无法取到right的位置)
class Solution(object): def lengthOfLongestSubstring(self,s): if len(s)<=1: return len(s) left = 0 longest = 0 for right in range(1,len(s)): now = s[left:right] if s[right] in now: longest = max(longest,len(now)) left = left+now.index(s[right])+1 else: if right == len(s)-1: longest = max(longest,len(now)+1) return longest