假设我们有一个字符串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 <
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