python最长子字符串
时间: 2023-09-04 15:15:15 浏览: 44
以下是一个Python程序,用于查找给定字符串中的最长子字符串:
```python
def longest_substring(s):
"""
Find the longest substring in a given string.
Args:
s (str): The input string.
Returns:
str: The longest substring.
"""
n = len(s)
start = 0
max_len = 0
seen = {}
for i in range(n):
if s[i] in seen and start <= seen[s[i]]:
start = seen[s[i]] + 1
else:
max_len = max(max_len, i - start + 1)
seen[s[i]] = i
return s[start:start + max_len]
```
该函数采用一种称为“滑动窗口”的技术来查找最长子字符串。它维护一个窗口,该窗口始终包含不包含重复字符的最长子字符串。在遍历给定字符串时,它检查字符是否已经在窗口中。如果是,它将窗口的起始位置移到重复字符的下一个位置,否则它将扩展窗口并更新最大长度。最后,函数返回最长子字符串。
例如,对于字符串“abcabcbb”,该函数将返回“abc”,因为它是该字符串中的最长不重复子字符串。