def lenLongestSubstring( stringX ):
maxi = 0
trackList = [] # List to store the chars that have been visited
for char in stringX :
if ( char not in trackList ):
trackList.append(char)
else: # found a repeating char
listLen = len(trackList)
maxi = max( maxi, listLen )
return max( maxi, len(trackList) )
def main():
assert lenLongestSubstring( "BBBBB" ) == 1
assert lenLongestSubstring( "ABDEFGABEF" ) == 6
assert lenLongestSubstring( "abcabcbb" ) == 3
assert lenLongestSubstring("abcadeftgh") == 9
print "\nAll asserts PASSED!!, Yaaaaaay!!\n"
if __name__ == "__main__":
main()
ZGVmIGxlbkxvbmdlc3RTdWJzdHJpbmcoIHN0cmluZ1ggKToKICAgIG1heGkgPSAwCiAgICB0cmFja0xpc3QgPSBbXSAjIExpc3QgdG8gc3RvcmUgdGhlIGNoYXJzIHRoYXQgaGF2ZSBiZWVuIHZpc2l0ZWQgIAogICAgZm9yIGNoYXIgaW4gc3RyaW5nWCA6CiAgICAgICAgaWYgKCBjaGFyIG5vdCBpbiB0cmFja0xpc3QgKToKICAgICAgICAgICAgdHJhY2tMaXN0LmFwcGVuZChjaGFyKSAKICAgICAgICBlbHNlOiAjIGZvdW5kIGEgcmVwZWF0aW5nIGNoYXIKICAgICAgICAgICAgbGlzdExlbiA9IGxlbih0cmFja0xpc3QpCiAgICAgICAgICAgIG1heGkgPSBtYXgoIG1heGksIGxpc3RMZW4gKQogICAgcmV0dXJuIG1heCggbWF4aSwgbGVuKHRyYWNrTGlzdCkgKQoKCmRlZiBtYWluKCk6Cglhc3NlcnQgbGVuTG9uZ2VzdFN1YnN0cmluZyggIkJCQkJCIiApID09IDEKCWFzc2VydCBsZW5Mb25nZXN0U3Vic3RyaW5nKCAiQUJERUZHQUJFRiIgKSA9PSA2Cglhc3NlcnQgbGVuTG9uZ2VzdFN1YnN0cmluZyggImFiY2FiY2JiIiApID09IDMKCWFzc2VydCBsZW5Mb25nZXN0U3Vic3RyaW5nKCJhYmNhZGVmdGdoIikgPT0gOQoJcHJpbnQgIlxuQWxsIGFzc2VydHMgUEFTU0VEISEsIFlhYWFhYWF5ISFcbiIKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBtYWluKCk=