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

    以上是 最长子串,不重复Python中的字符 的全部内容, 来源链接: utcz.com/z/322318.html

    回到顶部