程序在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:= mask XOR(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

    猜你喜欢