哈希表
-
给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度
def longofstr(s: str) -> int: n = len(s) left = 0 #左边界,如有重复依次剔除最左边元素 cur_len = 0 #记录当前window的长度即字母个数 max_len = 0 #保存最长长度 window = set() #滑动窗口意义是遇见重复字母则以重复字母开始新建一个窗口 for i in range(n): cur_len += 1 while s[i] in window: #遇见重复字母则删除重复字母前的所有字母,如abcc,到第二个c时删除abc,剩余c。 window.remove(s[left]) left += 1 cur_len -= 1 if cur_len > max_len: max_len = cur_len window.add(s[i]) return max_len