从一个字符串了找一个不重复的最长子串,使用python实现
时间: 2024-04-10 07:33:38 浏览: 81
Python实现针对给定字符串寻找最长非重复子串的方法
5星 · 资源好评率100%
可以使用滑动窗口的方法来解决这个问题。具体的实现如下:
```python
def find_longest_unique_substring(s):
if not s:
return 0
left = 0 # 滑动窗口的左边界
max_length = 0 # 最长子串的长度
char_set = set() # 用于存储当前窗口中的字符
for right in range(len(s)):
while s[right] in char_set:
char_set.remove(s[left])
left += 1
char_set.add(s[right])
max_length = max(max_length, right - left + 1)
return max_length
```
这里使用了一个滑动窗口来维护当前的子串。窗口的左边界 `left` 初始为 0,右边界 `right` 从左到右遍历字符串。如果遇到重复字符,就将左边界向右移动,并将移除的字符从集合中删除。每次移动窗口时,更新最长子串的长度。
你可以调用 `find_longest_unique_substring` 函数并传入一个字符串来测试它的功能。例如:
```python
s = "pwwkew"
result = find_longest_unique_substring(s)
print(result) # 输出:3
```
这里的最长不重复子串是 "wke",它的长度为 3。
阅读全文