36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
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")) |