题目:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
最长子序列我也是使用两种方法做的,第一种使用暴力法遍历字符串中所有子序列直接超时,这里就不贴出来了。第二种网上看有一些什么滑动窗口什么的方法,表示看不太懂,然后我找到了一篇自己能理解的,时间复杂度为O(n)
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
temp = res = ""
for item in s:
if item not in temp:
#该字母不在temp子序列中
temp += item
if len(temp) > len(res):
res = temp
else:
#在子序列中
index = temp.index(item)#重复字母在子序列中的下标
if index == len(temp) - 1:
#重复字母是最后一个
temp = item
else:
#重复字母在子序列中
temp = temp[index + 1 :] + item #新的子序列
return len(res)