刷题记录7.15无重复字符串的最长子串

题目要求:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

按照题解里面的思路写的:双指针遍历字符串,beg为不重复子串开始的位置,end为结束位置,用ooc存放不重复子串的内容,若end指向的字符已经在ooc集合里,则beg向前移动一个位置,end重置为beg之后的位置;当前ooc与历史最大ooc长度的max值即为最长子串的长度。

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        beg, end = 0, 0
        ooc = set()
        ans = 0
        while beg < len(s) and end < len(s):
            if s[end] not in ooc:
                ooc.add(s[end])
                end += 1
                ans = max(len(ooc), ans)
            else:
                beg += 1
                ooc = {s[beg]}
                end = beg + 1
        return ans

但是好像做了很多重复的工作。。。感觉下一次开始计数从上次重复的元素开始能比较好一点

你可能感兴趣的:(力扣题库)