https://medium.com/thetechieguys/leetcode-09-longest-substring-without-repeating-characters-b90c2407899e