给定一个字符串返回不含有重复字符的子字符串中最长的一个
时间: 2024-11-22 10:40:04 浏览: 5
Python实现针对给定字符串寻找最长非重复子串的方法
5星 · 资源好评率100%
给定一个字符串,找到其中最长的无重复字符子串是一个常见的编程问题。你可以使用滑动窗口算法来解决这个问题。基本思路是维护两个指针,一个指向当前子串的起始位置,另一个指向下一个可能包含新字符的位置。遍历字符串的过程中,遇到新的字符就将起始指针向右移动,直到该字符在当前子串中首次出现,然后记录下此时的长度。
以下是 Python 的解决方案示例:
```python
def lengthOfLongestSubstring(s):
if not s:
return 0
n = len(s)
start = maxLength = 0
usedChar = {}
for i in range(n):
while s[i] in usedChar and start <= usedChar[s[i]]:
# 当前字符重复,移除最左侧的重复字符
start += 1
usedChar.pop(s[start - 1])
# 更新最长子串长度
maxLength = max(maxLength, i - start + 1)
usedChar[s[i]] = i + 1
return maxLength
```
在这个函数中,`usedChar` 字典用于存储每个字符最后一次出现的位置。当遇到重复字符时,会更新 `start` 并移除最左侧的重复字符,直到可以继续添加当前字符到子串中。
阅读全文