class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
if not s:
return 0
left = 0
lookup = set()
n = len(s)
max_len = 0
cur_len = 0
for i in range(n):
cur_len += 1
while s[i] in lookup:
lookup.remove(s[left])
left += 1
cur_len -= 1
if cur_len > max_len: max_len = cur_len
lookup.add(s[i])
return max_len
if __name__ == '__main__':
obj = Solution()
str_input = "abcabcbb"
result = obj.lengthOfLongestSubstring(str_input)
print('result:', result)
class Solution(object):
def lengthOfLongestSubstring(self, s):
if not s:
return 0
lookup = []
max_len = 0
for i in range(len(s)):
if s[i] in lookup:
# 有重復(fù)字串, 則將該字符及之前的字符移除
index = lookup.index(s[i])
lookup = lookup[index+1:]
lookup.append(s[i])
cur_len = len(lookup)
if cur_len > max_len:
# 將新的字符添加后沉删,更新最長的長度
max_len = cur_len
return max_len