程序在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