无重复字符的最长子串
时间: 2023-01-29 20:49:30 浏览: 141
无重复字符的最长子串是指在一个字符串中,找到一个连续的子串,使得这个子串中的所有字符都是唯一的。
举个例子,对于字符串 "abcabcbb",其中无重复字符的最长子串是 "abc",长度为 3。
如果要求解决这个问题,可以使用滑动窗口的方法。具体来说,设置两个指针 left 和 right,初始时 left 和 right 都指向字符串的第一个字符。然后可以不断地将 right 向右移动,直到出现重复字符,此时可以将 left 向右移动一位,然后继续移动 right。这样不断重复这个过程,就可以找到无重复字符的最长子串。
下面是一个 Python 代码实现的例子:
```
def lengthOfLongestSubstring(s):
# 初始化 left 和 right
left = 0
right = 0
# 初始化答案
ans = 0
# 建立一个字典,用于记录每个字符最后出现的位置
last = {}
while right < len(s):
# 如果当前字符出现过
if s[right] in last:
# 更新 left 的位置
left = max(left, last[s[right]] + 1)
# 更新当前字符最后出现的位置
last[s[right]] = right
# 更新答案
ans = max(ans, right - left + 1)
# 将 right 向右移动一位
right += 1
# 返回答案
return ans
阅读全文