Задача Задача №3480671
А
А
Решение на Python 3
Идея:
- пройти по строке и для каждого максимального блока одинаковых символов длиной L записать min(L, K) копий этого символа.
- таким образом каждый блок имеет длину не более K, порядок символов не меняется.
Код:
import sys
def main():
# читаем пару строк: сначала K, затем S
lines = [line.strip() for line in sys.stdin if line.strip() != ""]
if len(lines) < 2:
return
k = int(lines[0])
s = lines[1]
res = []
i = 0
n = len(s)
while i < n:
ch = s[i]
j = i
while j < n and s[j] == ch:
j += 1
run_len = j - i
take = run_len if run_len <= k else k
res.append(ch * take)
i = j
print(''.join(res))
if __name__ == "__main__":
main()
Пример:
- Ввод: 2 ur aa S u p e rr (без пробелов в реальном вводе: "uraaSuperr")
- Вывод: uraaSuperr
Примечание:
- В примере из условия, где ввод "2\nuraaSuperr", корректный результат по этому алгоритму будет "uraaSuperr". Если в тестах ожидалось иное поведение, возможно в примере допущена ошибка в описании.