class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
if len(s) == 1:
return 1
elif s == '':
return 0
tmp=[]
most=0 #结果
clock=0 #暂存
i= 0
num=0
while (i < len(s)) :
if s[i] not in tmp:
tmp.append(s[i])
clock=clock+1 #长度+1
else:
if clock > most:
most=clock
tmp.clear()
num=s.index(s[i],num)+1
i=num
tmp.append(s[i])
clock = 1
i=i+1
if most < clock:
most=clock
return most
思路:暴力破解
对于长度为0和1的字符串,直接返回即可
(1)确定一个指针j指向字符串s的头
(2)指针i指向j,i向下走,将s[i]放入一个记录字符的数组tmp中。如果tmp中存在相同的字符,则说明该子字符串出现了重复字符,计算出当前子字符串的长度,并且和最大长度相比较。
(3)指针j向下走,重复第二步
优化:
在第(3)步中,指针j可以指向子字符串中重复的字符,例如:当前子串为s=abcdec,在遍历到最后一个c时发现字符重复,此时j指向s[0],i指向s[5],可令s指向子串中的第一个c,即s[2]