1
from sortedcontainers import SortedList6
self, s: str, queryCharacters: str, queryIndices: List[int]11
for char, it in itertools.groupby(s):12
c = sum(1 for _ in it)14
sl.add((curr, curr + c, char))17
for char, i in zip(queryCharacters, queryIndices):18
t = (i, math.inf, "a")19
index = sl.bisect_right(t) - 120
to_remove = [sl[index]]22
left, right, original_char = to_remove[0]23
if original_char != char:24
length.remove(right - left)28
to_add.append((left, right, original_char))29
length.add(right - left)32
to_add.append((left, right, original_char))33
length.add(right - left)35
to_add.append((left, i, original_char))37
to_add.append((i + 1, right, original_char))38
length.add(right - (i + 1))41
if index - 1 >= 0 and sl[index - 1][1:3] == (i, char):42
l, old_r, _ = sl[index - 1]43
to_remove.append(sl[index - 1])44
length.remove(old_r - l)47
and sl[index + 1][0] == i + 148
and sl[index + 1][2] == char50
old_l, r, old_length = sl[index + 1]51
to_remove.append(sl[index + 1])52
length.remove(r - old_l)60
ans.append(length[-1])