思路:

要求使用滑动窗口来写

  1. 初始化一个空字符串cur,从头遍历字符
  2. 若当前字符i不在cur中,加入cur,同时比较cur的长度和最长的长度,更新最大值
  3. 若当前字符i在cur中,通过一个循环把重复字符之前的全部移除并加上当前字符i

代码:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int: 
        cur = "" #初始化空字符串
        ans = 0 # 存最大的长度
        for i in s: #遍历字符串
            if i not in cur: #没有重复
                cur += i #加入
                n = len(cur) # 计算长度
                if n > ans: #更新最大值
                    ans = n
            else:
                while cur and cur[0]!=i: #出现重复,一直循环去除重复字符之前的序列
                    cur = cur[1:]
                cur = cur[1:]+i #因为去掉了原来的重复字符,加上当前字符
        return ans

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐