1
def get_next(char):
2
x = ord(char) - ord("a")
3
x = (x + 1) % 26
4
return chr(ord("a") + x)
5

6

7
class Solution:
8
def findSubstringInWraproundString(self, p: str) -> int:
9
i = 0
10
n = len(p)
11
map_ = collections.defaultdict(int)
12
while i < n:
13
start = i
14
prev_val = p[i]
15
while i + 1 < n and get_next(prev_val) == p[i + 1]:
16
prev_val = p[i + 1]
17
i += 1
18
while start <= i:
19
curr_val = i - start + 1
20
map_[p[start]] = max(map_[p[start]], curr_val)
21
start += 1
22
i += 1
23
return sum(map_.values())

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0