class Solution: def lengthOfLongestSubstring(self, s: str) -> int: dic = {} def encode(ch) -> int: if ch not in dic: dic[ch] = len(dic) return dic[ch] l = [0 for i in range(108)] rlt = 0 start = 0 for i, ch in enumerate(s): idx = encode(ch) if(l[idx] >= 1): rlt = max(rlt, i - start ) # print("now", start, rlt) while start < i and l[idx] >= 1: tmp = encode(s[start]) start = start + 1 l[tmp] -= 1 l[idx] += 1 # print(ch, start, l ) rlt = max(rlt, len(s) - start ) if rlt == 0: return len(s) return rlt sol = Solution() print(sol.lengthOfLongestSubstring("abcabcbb")) print(sol.lengthOfLongestSubstring("bbbbb")) print(sol.lengthOfLongestSubstring("pwwkew")) print(sol.lengthOfLongestSubstring("abcde")) print(sol.lengthOfLongestSubstring("abcdbej")) print(sol.lengthOfLongestSubstring("bbcdjeb")) print(sol.lengthOfLongestSubstring(" ")) print(sol.lengthOfLongestSubstring("1 b 234aac 2"))