(滑动窗口)3. 无重复字符的最长子串(中等)
题目
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
思路
创一个空列表。
for 依次填入字符:
if 字符in列表:
找出字符下标 find,
将列表更新,从下标 find+1 处更新,直到新添加处。
else :
if 列表长度 > max
max=列表长度
return max
代码
###Python
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
a=[]
max=0
for i in range(0,len(s)):
if s[i] in a:
b=[]
for j in range(0,len(a)):
if a[j]==s[i]:
find=j
a.append(s[i])
for k in range(find+1,len(a)):
b.append(a[k])
a=b
else:
a.append(s[i])
c=len(a)
if c>max:
max=c
return max