使用Python寻找最长的快乐子字符串的程序

使用Python寻找最长的快乐子字符串的程序

假设我们有一个字符串s。我们需要找到字符串s中最长的快乐子字符串。对于一个字符串s,它被认为是快乐的当且仅当,s中的每个字母都有大写和小写两种形式。如果有多个这样的子串,则返回最早出现的子串。

因此,如果输入是s =“ZbybBbz”,则输出将是“bBb”,因为它包含小写和大写的B。

为了解决这个问题,我们将遵循以下步骤−

  • cur_max:= -1

  • res:= 空字符串

  • 对于i从0到s的大小,执行以下操作

    • c:= s[i]

    • upper:=新集合

    • lower:=新集合

    • 如果c是小写,则

      • 将c添加到lower中
    • 如果c是大写,则
      • 将c转换为小写后添加到upper中
    • 对于j从i + 1到s的大小,执行以下操作
      • c:= s[j]

      • 如果c是小写,则

      • 将c添加到lower中

      • 如果c是大写,则

      • 将c转换为小写后添加到upper中

      • 如果upper与lower相同,则

      • 如果j-i > cur_max,则

        • cur_max:= j-i

        • res:=从索引i到j + 1的子字符串

  • 返回res

以下是实现细节−

样例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程