程序在Python中查找具有偶数元音的最长子字符串的长度
假设我们有一个字符串s(小写),我们必须找到最长的子字符串的长度,其中每个元音出现偶数次。
因此,如果输入类似于s=“anewcoffeepot”,则输出将为10,因为子字符串“wcoffeepot”具有两个元音“o”和“e”,它们都出现两次。
为了解决这个问题,我们将遵循以下步骤-
元音:=将元音和数值分配为{a:0,e:1,i:2,o:3,u:4}的映射
prefix:=一个空的映射,并在其中插入键值对(0,-1)
掩码:=0,n:=s的大小,res:=0
对于0到n范围内的i,执行
res:=res的最大值和(i-prefix[mask])
前缀[mask]:=i
mask:=maskXOR(2^元音[s[i]])
如果s[i]是元音,则
如果mask不是前缀,则
除此以外,
返回资源
让我们看下面的实现以更好地理解-
示例
class Solution: def solve(self, s): vowels = {"a": 0, "e": 1, "i": 2, "o": 3, "u": 4} prefix = {0: −1} mask = 0 n = len(s) res = 0 for i in range(n): if s[i] in vowels: mask ^= 1 << vowels[s[i]] if mask not in prefix: prefix[mask] = i else: res = max(res, i − prefix[mask]) return res ob = Solution() s = "anewcoffeepot" print(ob.solve(s))
输入值
"anewcoffeepot"输出结果
10