вы можете использовать sliding window
или two pointers
для ее решения.
ключевым моментом является использование диапазона [start, end]
для записи последовательных последовательностей и добавление только тех последовательностей, длина которых меньше n
:
def delete_consecutive(s, n):
start, end, count = 0, 0, 0
res, cur = '', ''
for end, c in enumerate(s):
if c == cur:
count += 1
else:
# only add consecutive seq less than n
if count < n:
res += s[start:end]
count = 1
start = end
cur = c
# deal with tail part
if count < n:
res += s[start:end+1]
return res
тест и вывод:
print(delete_consecutive('aabcca', 2)) # output: ba
print(delete_consecutive('aaabbccc', 3)) # output: bb
Надеюсь, что это поможет вам, и прокомментируйте, если у вас есть дополнительные вопросы. :)