leetcode/3-240603-pass/main.py
2024-06-04 21:20:55 +02:00

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"))