这道题采用滑动窗口的思路来求解,维护一个left,right窗口,保证窗口内始终没有重复的字符,记录窗口的最大长度。
具体而言:
① 初始化一个字典,值是字符,键是上一次出现的索引。右指针right逐个向右遍历字符串,拿到当前字符c
②若这个字符出现过,并且上次出现的索引在窗口内部,说明有重复字符,此时为了将重复字符剔除出窗口,将左指针跳到重复字符的下一个位置。
若字符没有出现过,或者即使出现过但是没有在窗口内,则左指针不动
③无论左指针是否移动,都要更新字典,保存当前字符的最新下标
④计算当前窗口长度
总的来说,这个问题的核心在于双指针,时间复杂度是O(n)。