Medium.
# Given a string, find the length of the longest substring without repeating characters.
#
# Examples:
#
# Given "abcabcbb", the answer is "abc", which the length is 3.
#
# Given "bbbbb", the answer is "b", with the length of 1.
#
# Given "pwwkew", the answer is "wke", with the length of 3.
# Note that the answer must be a substring, "pwke" is a subsequence and not a substring.
class Solution():
def lengthOfLongestSubstring(self, s):
longest, start, visited = 0, 0, [False for _ in range(256)]
for ind, val in enumerate(s):
if not visited[ord(val)]:
visited[ord(val)] = True
longest = max(longest, ind-start+1)
else:
while s[start] != val:
visited[ord(s[start])] = False
start += 1
start += 1
return longest
if __name__ == '__main__':
assert Solution().lengthOfLongestSubstring('abcabcbb') == 3
assert Solution().lengthOfLongestSubstring('bbbb') == 1
assert Solution().lengthOfLongestSubstring('pwwkew') == 3
class Solution():
def lengthOfLongestSubstring(self, s):
longest = 0
i, j = 0, 1
while j < len(s):
if len(''.join(list(set(s[i:j+1])))) == len(s[i:j+1]):
if len(s[i:j+i]) > longest:
longest = len(s[i:j+1])
j += 1
else:
i += 1
return longest