P46 寻找不含重复字符的子串
时间: 2024-02-26 16:31:24 浏览: 21
您好!对于寻找不含重复字符的子串的问题,我们可以使用滑动窗口算法来解决。
滑动窗口算法的基本思路是维护一个滑动窗口,通过移动窗口的起始位置和结束位置来遍历整个字符串,并且保证窗口内的字符没有重复。具体步骤如下:
1. 定义一个哈希集合(或者数组)来存储窗口内的字符,以及一个变量 maxLen 来记录最长不含重复字符的子串的长度。
2. 初始化窗口的起始位置 start 和结束位置 end 为 0。
3. 遍历字符串,将每个字符加入窗口,如果字符已经存在于窗口中,则移动窗口的起始位置 start 到重复字符的下一个位置,并更新窗口内的字符。
4. 每次移动窗口结束位置 end,都计算当前窗口的长度(即 end - start + 1),并更新 maxLen 的值。
5. 遍历完整个字符串后,maxLen 就是最长不含重复字符的子串的长度。
以下是用 Python 实现的示例代码:
```python
def findLongestSubstring(s):
maxLen = 0
start = 0
end = 0
charSet = set()
while end < len(s):
if s[end] not in charSet:
charSet.add(s[end])
end += 1
maxLen = max(maxLen, end - start)
else:
charSet.remove(s[start])
start += 1
return maxLen
```
希望能解答您的问题!如果还有其他问题,请随时提问。