leetcode 最长无重复字符串问题

leetcode第三题,为什么统计到一般就不统计了。延长字符串长度和缩短字符串长度都不行

img

修改成 if list[j] in test or (j == len(list1) - 1 and list[j] not in test):

img

以下内容部分参考ChatGPT模型:


这个问题可能是由于没有正确更新左边界导致的。在延长字符串长度时,如果发现当前字符已经在窗口中出现过,需要将左边界移动到上一次该字符出现的位置的下一个位置,而不是直接将左边界移动到当前字符位置的下一个位置。另外,可以使用一个哈希表来记录每个字符最后一次出现的位置,以便在需要更新左边界时快速找到对应的位置。以下是一个示例代码:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        left = 0
        max_len = 0
        char_dict = {}
        
        for right in range(len(s)):
            if s[right] in char_dict and char_dict[s[right]] >= left:
                left = char_dict[s[right]] + 1
            char_dict[s[right]] = right
            max_len = max(max_len, right - left + 1)
        
        return max_len

这个代码使用了双指针的思想,left和right分别表示窗口的左右边界,char_dict是用来记录每个字符最后一次出现位置的哈希表。如果当前字符已经在窗口中出现过,就更新左边界,否则更新max_len。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快