def longestSubstring(s: str) -> int:
if s == "":
return 0
start = 0
end = 0
maxLength = 0
uniqueCharacter = set()
while end < len(s):
if s[end] not in uniqueCharacter:
uniqueCharacter.add(s[end])
end += 1
maxLength = max(maxLength, len(uniqueCharacter))
else:
uniqueCharacter.remove(s[start])
start += 1
return maxLength
#should output 3, as "abc" is the longest substring that occurs
print(longestSubstring("abcabcbb"))