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