Поиск кодировки длины выполнения для символов работает в большинстве тестовых случаев, за исключением одного

#python #string

Вопрос:

Для многократно повторяющейся символьной строки мой код работает нормально, но вот сценарий, в котором я даю строку «aaabba», ожидаемый результат-a3b2a1, но я получаю только a3b2. Пожалуйста, сообщите мне, что не так в коде.

 st = "aaabba"
n = len(st)
i = 0
while i < n - 1:
    count = 1   
    while (i < n-1 and st[i] == st[i 1]):
        count  = 1
        i  = 1
    i  = 1
    print(st[i - 1]   str(count), end="")
 

Комментарии:

1. Ваш отступ не имеет смысла. Пожалуйста, исправьте.

2. while (i < n-1 ...) — как вы рассчитываете добраться до последнего символа, если он не такой же, как предыдущий?

Ответ №1:

Проблема в первом цикле while. Код должен быть:

 st = "aaabba"
n = len(st)
i = 0
while i < n:
    count = 1   
    while (i < n-1 and st[i] == st[i 1]):
        count  = 1
        i  = 1
    i  = 1
    print(st[i - 1]   str(count), end="")
 

Комментарии:

1. Благодарю вас за то, что указали на это, да, это должно было быть либо я <= n-1, либо просто я