最长子串,不重复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