找出字符串中最长不含重复字符的子串长度
这是一个求解最长不含重复字符子串长度的问题。可以使用滑动窗口的方法来解决。
首先,定义一个空的滑动窗口,用来存储不重复的字符。然后,从字符串的第一个字符开始遍历,将每个字符依次添加到滑动窗口中。
如果遇到重复的字符,就需要移动滑动窗口的起始位置,使得窗口中不包含重复的字符。具体来说,可以使用一个哈希集合来判断字符是否重复,同时使用双指针来记录窗口的起始位置和结束位置。
遍历完成后,窗口的大小就是最长不含重复字符子串的长度。
下面是具体的实现代码:
def lengthOfLongestSubstring(s: str) -> int:
# 定义滑动窗口的起始位置和最长长度
start = 0
max_length = 0
# 定义一个哈希集合用于判断字符是否重复
char_set = set()
# 遍历字符串
for i in range(len(s)):
# 如果字符重复,则移动窗口的起始位置
while s[i] in char_set:
char_set.remove(s[start])
start += 1
# 将字符添加到窗口中
char_set.add(s[i])
# 更新最长长度
max_length = max(max_length, i - start + 1)
return max_length
# 测试样例
s1 = 'abcabcbb'
s2 = 'bbbbb'
s3 = 'pwwkew'
print(lengthOfLongestSubstring(s1)) # 输出 3
print(lengthOfLongestSubstring(s2)) # 输出 1
print(lengthOfLongestSubstring(s3)) # 输出 3
原文地址: https://www.cveoy.top/t/topic/mvk 著作权归作者所有。请勿转载和采集!