使用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