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"))
输出:
从上面的例子中可以看出,可能的最长子串的长度为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"))
输出:
从上面的解决方案中可以看出,我们可以使用for
循环和if-else
语句轻松地从一个字符串中获得最长的子串。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。