https://medium.com/leetsolve/how-i-solve-leetcode-3-longest-substring-without-repeating-characters-e4a628525666