给定一个字符串,找出不含有重复字符的 最长子串 的长度。
示例:
给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。
给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。
给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
oldL=0
longL=0
j=0
if len(s) == 1:
return 1
while len(s) > 1:
i=1
while i < len(s):
if s[i] not in s[:i]: # 如果前字符串中没有当前字符,则索引+1,判断下一个字符
i += 1
else:
j = s[:i].index(s[i]) # 当前字符在前字符串中的位置
oldL=i
if oldL > longL:
longL=oldL
break
if i == len(s): # 如果i走到了字符串s的最后,说明判断完了,则跳出循环
oldL=i
if oldL > longL:
longL=oldL
break
s=s[j+1:] # 从重复字符串后面的一个位置截取剩下的字符,进入下一次判断
return longL