longest-substring-without-repeating-characters, time O(n)