Find the Longest Substring Containing Vowels in Even Counts LeetCode solution in Python

1
class Solution:
2
def findTheLongestSubstring(self, s: str) -> int:
3
integrals = [
4
(False, False, False, False, False)
5
] # integrals[10][mapping["a"]] == False means we have seen "a" appears even times before index 10
6
mapping = {"a": 0, "i": 1, "u": 2, "e": 3, "o": 4}
7

8
for v in s:
9
vector = list(integrals[-1])
10
if v in mapping: # if v is a vowel
11
vector[mapping[v]] = not vector[
12
mapping[v]
13
] # toggle that dimension, because if v had appeared even times before, it becomes odd times now
14
integrals.append(tuple(vector))
15

16
seen = {}
17
res = 0
18

19
for i, v in enumerate(integrals):
20
if v in seen: # we have seen this vector before
21
res = max(res, i - seen[v]) # compare its substring length
22
else:
23
seen[v] = i # just record the first time each vector appears
24

25
return res

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0