Python中没有重复字符的最长子串

我们将介绍如何在Python中制作子串,以及如何通过实例制作一个不重复字符的子串。

Python中没有重复字符的最长子串

在本教程中,我们将学习一些独特的东西,可以提高你的知识,使你的循环更加完美。我们将学习如何在不重复字符的情况下从一个字符串中制作子串。

子串的意思是,如果我们有一个字符串并将其分成多个小部分,它们将被称为该特定字符串的子串。如果我们想得到不重复的最长的子串,最长的子串方法是非常有用的。

在这个方法中,我们将使用一个循环,遍历完整的字符串,逐一检查每个元素,并给出原始字符串中不重复的子串。

在Python编程中,有很多方法可以获得最长的子串。这些方法非常简单,而且很有帮助;我们将详细讨论它们。

使用While 循环来获取Python中最长的子串

我们将创建一个GetLongestSubstring ,在这个方法中,它将把object 作为一个参数。我们将定义一个名为Length 的函数,在这个类中接受两个参数。

我们将通过while 循环,直到我们从给定的字符串中找到最长的子串。

# python
class GetLongestSubstring(object):
   def Length(self, x):
      a = 0
      b = 0
      c = {}
      sol = 0
      while b < len(x):
         if x[b] not in c or a>c[x[b]]:
            sol = max(sol,(b-a+1))
            c[x[b]] = b
         else:
            a = c[x[b]]+1
            sol = max(sol,(b-a+1))
            b-=1
         b+=1
      return sol
obj = GetLongestSubstring()
print(obj.Length("ABCDEFGABCGHIJKLMNO"))

输出:

longest substring using while loop in python

从上面的例子中可以看出,可能的最长子串的长度为12,与原始字符串中的ABCGHIJKLMNO 子串相同。

使用For 循环和If-Else 语句来获取Python中最长的子串

我们将尝试使用for 循环来实现同样的情况。首先,我们将定义函数GetLongestSubstring ,如下图所示。

这个函数将把原始字符串转换成多个子串,并检查子串是否是唯一的。如下图所示,这个函数将返回最长的子串及其长度。

# python
def GetLongestSubstring(x):
        if len(set(x)) == len(x):
            return len(x)
        Substring = ''
        StrLen = 1
        for a in x:
            if a not in Substring:
                Substring = Substring + a
                StrLen = max(StrLen, len(Substring))
            else:
                Substring = Substring.split(a)[1] + a
        print(Substring)
        return StrLen
print(GetLongestSubstring("ABCDEFGABCGHIJKLMNO"))

输出:

longest substring using for loop in python

从上面的解决方案中可以看出,我们可以使用for 循环和if-else 语句轻松地从一个字符串中获得最长的子串。