给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。
时间: 2024-03-01 12:45:19 浏览: 102
寻找字符串中不包含重复字符的最长子串
好的,这是一个比较经典的字符串问题。我可以给你提供一种解法,使用滑动窗口来解决。
具体来说,我们可以使用两个指针,分别表示当前子串的左右边界。我们先将左指针和右指针都初始化为 0,然后不断地增加右指针,同时更新最长子串的长度。如果发现右指针所指向的字符已经在当前子串中出现过了,那么我们就需要移动左指针,直到当前子串中不再包含重复的字符为止。
下面是具体的实现过程:
```python
def lengthOfLongestSubstring(s: str) -> int:
n = len(s)
if n == 0:
return 0
left, right = 0, 0
max_len = 1
char_set = set()
while right < n:
if s[right] not in char_set:
char_set.add(s[right])
right += 1
max_len = max(max_len, right - left)
else:
char_set.remove(s[left])
left += 1
return max_len
```
时间复杂度为 O(n),空间复杂度为 O(min(n, m)),其中 m 表示字符集的大小。
阅读全文