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