这是一个求解最长不含重复字符子串长度的问题。可以使用滑动窗口的方法来解决。

首先,定义一个空的滑动窗口,用来存储不重复的字符。然后,从字符串的第一个字符开始遍历,将每个字符依次添加到滑动窗口中。

如果遇到重复的字符,就需要移动滑动窗口的起始位置,使得窗口中不包含重复的字符。具体来说,可以使用一个哈希集合来判断字符是否重复,同时使用双指针来记录窗口的起始位置和结束位置。

遍历完成后,窗口的大小就是最长不含重复字符子串的长度。

下面是具体的实现代码:

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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录