使用Python查找最长好的子串的程序
假设我们有一个字符串s。我们必须找到s的最长好的子串。对于字符串s,如果对于s中的每个字母,它都以大写和小写形式出现,则可以说它很好。如果有多个这样的子串,则返回最早出现的子串。
因此,如果输入类似于s="ZbybBbz",那么输出将是"bBb",因为它包含小写和大写的B。
为了解决这个问题,我们将按照以下步骤操作-
cur_max:=-1
res:=空字符串
对于范围0到s大小的i,请执行
c:=s[j]
如果c是小写,则
如果c是大写的,那么
如果上与下相同,则
将c添加到下层
将c添加到大写但在将其转换为小写之前
cur_max:=ji
res:=s的子串[从索引i到j+1]
如果ji>cur_max,则
将c添加到大写但在将其转换为小写之前
将c添加到下层
c:=s[i]
上:=一个新的集合
下:=一个新的集合
如果c是小写,则
如果c是大写的,那么
对于在i+1到s大小的范围内的j,请执行
返回资源
让我们看看以下实现以获得更好的理解-
示例
def solve(s): cur_max= -1 res="" for i in range(len(s)): c = s[i] upper = set() lower = set() if c.islower(): lower.add(c) if c.isupper(): upper.add(c.lower()) for j in range(i+1,len(s)): c = s[j] if c.islower(): lower.add(c) if c.isupper(): upper.add(c.lower()) if upper == lower: if j-i>cur_max: cur_max = j-i res = s[i:j+1] return res s = "ZbybBbz" print(solve(s))
输入
"ZbybBbz"输出结果
bBb