最长子串,不重复Python中的字符
假设我们有一个字符串。我们必须找到最长的子字符串而不重复字符。因此,如果字符串类似于“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
范例(Python)
让我们看一下下面的实现以获得更好的理解
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