题目描述:
给定一个字符串,请你找出其中不含有重复字符的?最长子串?的长度。
示例?1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是?"wke",所以其长度为 3。
? 请注意,你的答案必须是 子串 的长度,"pwke"?是一个子序列,不是子串。
代码1:(error)
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
temp_set = set()
before, record = 0, 0
have_same = False
for i in s:
temp_set.add(i)
if len(temp_set) == before:
have_same = True
if record < before:
record = before
temp_set.clear()
temp_set.add(i)
elif len(temp_set) > record:
record = len(temp_set)
before = len(temp_set)
if have_same is False:
record = len(temp_set)
return record
代码2:
class Solution:
# @return an integer
def lengthOfLongestSubstring(self, s):
start = maxLength = 0
usedChar = {}
for i in range(len(s)):
if s[i] in usedChar and start <= usedChar[s[i]]:
start = usedChar[s[i]] + 1
else:
maxLength = max(maxLength, i - start + 1)
usedChar[s[i]] = i
return maxLength
原文:https://www.cnblogs.com/tbgatgb/p/11070747.html