假设我们有一个字符串。我们必须找到最长的子字符串而不重复字符。因此,如果字符串类似于“ ABCABCBB”,那么结果将为3,因为有一个重复的子字符串,长度为3。即为“ ABC”。
为了解决这个问题,我们将按照以下步骤
设置i:= 0,j:= 0,设置一张映射以存储信息
回答:= 0
而j <字符串的长度s
i:= map [s [j]] + 1
ans:= max(ans,j – i + 1)
将j减1
ans:= max(ans,j – i + 1)
map [s [j]]:= j
如果s [j]在映射中不存在,或者i> map [s [j]],则
除此以外
将j增加1
返回ans
让我们看一下下面的实现以获得更好的理解
class Solution(object): def lengthOfLongestSubstring(self, s): i =0 j = 0 d={} ans = 0 while j < len(s): if s[j] not in d or i>d[s[j]]: ans = max(ans,(j-i+1)) d[s[j]] = j else: i = d[s[j]]+1 ans = max(ans,(j-i+1)) j-=1 #print(ans) j+=1 return ans ob1 = Solution()print(ob1.lengthOfLongestSubstring("ABCABCBB"))
"ABCABCBB"
输出结果
3