题目
解答
代码
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
lb=[]
n=1
k=0
if len(s)==1:
return 1
elif len(s)==0:
return 0
else:
for i in range(1,len(s)):
a=s[k:k+n].find(s[i])
if a<0:#不在
n+=1
lb.append(n)
else:#在
lb.append(n)
n=n-a
k=k+a+1
return max(lb)
思路
- 当s长度 ≤ 1时,直接返回其长度
- 当s长度>1时,开始遍历查找:
- k表示寻找的子字符串的开头位置
- n表示子字符串的长度
- a表示子字符串里出现s[i]的位置
- lb记录子字符串的长度
- 当s[i]不在子字符串里时,增加子字符串长度n,记录长度,继续遍历
- 当s[i]在子字符串里时,先记录长度,n减掉重复位置前的个数,k移到重复位置的后一位,继续遍历。