Ошибка в задаче со Stepik.org

Выполняя задание на Степике, столкнулся с проблемой. Написанная программка выдает правильные ответы, но не принимается проверкой, пишет:

Failed test #5 of 15. Wrong answer

(Здесь впервые задаю вопрос, не обессудьте, может не в верной форме))

Задание: Узнав, что ДНК не является случайной строкой, только что поступившие в Институт биоинформатики студенты группы информатиков предложили использовать алгоритм сжатия, который сжимает повторяющиеся символы в строке.

Кодирование осуществляется следующим образом: s = 'aaaabbсaa' преобразуется в 'a4b2с1a2', то есть группы одинаковых символов исходной строки заменяются на этот символ и количество его повторений в этой позиции строки.

Напишите программу, которая считывает строку, кодирует её предложенным алгоритмом и выводит закодированную последовательность на стандартный вывод. Кодирование должно учитывать регистр символов.

и решение:

s = input()
a = len(s)
b = ""
j = 1
for i in range(0, a-1):
    if s[i] == s[i + 1]:
        j +=1
        if j == len(s):
            b = s[0] + str(j)
    else:
        b = b +s[i]+ str(j)
        j = 1        
if len(s)>= 2 and s[a - 1]!= s[a - 2]:
    b += s[a - 1] + "1"
elif len(s) >=3:
    if s[a - 1] == s[a - 2] and s[a-2] != s[a - 3]:
        b += s[a-1] + "2"
elif len(s) == 1:
    b = b + s[0] + "1"
print(b)

Ответы (4 шт):

Автор решения: Евгений

Нашел ошибку) Хотя решение по прежнему с костылями:

s = input()
a = len(s)
b = ""
j = 1
for i in range(0, a-1):
    if s[i] == s[i + 1]:
        j +=1
        if j >= 1 and i == a-2:
            b = b +s[i]+ str(j)
        if j == len(s):
            b = s[0] + str(j)
    else:
        b = b +s[i]+ str(j)
        j = 1        
if len(s)>= 2 and s[a - 1]!= s[a - 2]:
    b += s[a - 1] + "1"
elif len(s) == 1:
    b = b + s[0] + "1"
print(b)
→ Ссылка
Автор решения: MBo

Логика простая:

Запоминаем  стартовый индекс
Если очередной символ отличается от символа по стартовому индексу:
    Выводим символ по стартовому индексу и разность текущего индекса и стартового
    Запоминаем  стартовый индекс
Когда строка кончилась:
    Выводим символ по стартовому индексу и разность с длиной строки
→ Ссылка
Автор решения: S.K.

Итерируем по строке,инкремент на счетчик, как только нашли символ, отличающийся от предыдущего, в новую строку добавляем этот символ, счетчик обнуляем. Чтобы не упереться в конец строки, к оригинальной строке я добавил символ звездочки - "костыль", но в контексте этой задачи, всегда будет работать Выводим новую запись

s = input() + '*'

ns = ''
c = 0
for i in range(1, len(s)):
    c += 1
    if s[i] != s[i-1]:
        ns += (s[i-1] + str(c))
        c = 0

print(ns)
→ Ссылка
Автор решения: Grigoriy Tashu

Прекрасная идея про "костыль", спасибо. Тоже долго решал, пока сюда не заглянул.

s = input() + ' '
symbol = s[0]
counter = 0
for i in range(len(s)):
    if s[i] == symbol:
        counter += 1
        symbol = s[i]

    elif s[i] != symbol:
        print(symbol, counter, sep='', end='')
        counter = 1
        symbol = s[i]
→ Ссылка