https://blog.camel2243.com/posts/leetcode-3-longest-substring-without-repeating-characters/