无重复字符的最长子串的代码
时间: 2024-12-23 09:12:49 浏览: 12
在计算机科学中,寻找字符串中无重复字符的最长子串是一个常见的动态规划问题。以下是一个基于Python的解决方案,使用滑动窗口(sliding window)技巧:
```python
def lengthOfLongestSubstring(s):
if not s:
return 0
# 使用字典记录已遇到字符及其索引
char_map = {}
start = max_length = 0
for i, char in enumerate(s):
# 如果当前字符已经在字典中,并且它的下一个位置在当前开始位置之后
if char in char_map and char_map[char] >= start:
# 更新开始位置,跳过重复字符
start = char_map[char] + 1
else:
# 非重复字符,更新最大长度和字典
max_length = max(max_length, i - start + 1)
char_map[char] = i
return max_length
# 示例
s = "pwwkew"
print(lengthOfLongestSubstring(s)) # 输出:3,因为最长无重复字符子串是"woke"
```
这个函数的主要思想是从字符串的开头开始遍历,如果遇到重复字符,就从上次该字符出现的位置加一继续查找。同时,维护一个最大长度变量来跟踪已知的最长无重复子串。
阅读全文