Я написал программу, которая может сжимать последовательность символов.
def compress(string):
output = ""
counter = 1
firstLoop = True
for element in range(0, len(string)):
# if statement checking if current character was last character
if string[element] == string[element - 1]:
# if it was, then the character has been written more than one
# time in a row, so increase counter
counter = counter + 1
else:
# when we detect a new character reset the counter
# and also record the character and how many times it was repeated
if not firstLoop:
output = output + string[element - 1] + str(counter)
counter = 1
firstLoop = False
return output
data = "aaaabbbchhtttttttf"
print(data)
compressedData = compress(data)
print(compressedData)
Программа выводит:
aaaabbbchhtttttttf
a4b3c1h2t7
Таким образом, он обнаруживает, что есть «4» записи'a', поэтому он записывает 'a4', затем 'b3' для трех записей из b.
Проблема в том, что он забывает о 'f1' в конце строки.Я знаю, что это из-за строки:
output = output + string[element - 1] + str(counter)
Так как строка [элемент-1] относится к позиции в строке перед текущим элементом, таким образом, она никогда не достигнет конечной позиции, где 'е 'есть.Программа не работает без '-1', так как она не пишет правильное письмо.
Как я могу обойти эту проблему и включить в нее f?
правильный вывод должен быть a4b3c1h2t7f1.
Спасибо:)
Редактировать: я забыл упомянуть, что программа работает, если я добавляю дополнительный символ после 'f', например, просто пробел.Но это, конечно, потому что последний символ в моей строке - это просто пробел, а не буква.