Как написать программу со сжатыми буквенно-цифровыми c - PullRequest
0 голосов
/ 17 июня 2020

Мне нужно написать программу, которая будет принимать в качестве ввода буквенно-цифровую строку c. Строка будет содержать только символы нижнего регистра и числа от 0 до 9.

Мне нужно сжать алфавиты как алфавиты, умноженные на количество раз непрерывного повторения, например:

  • aaa до a3
  • bbbb до b4
  • c до c1

Если во входной строке есть целые числа, затем мне нужно сложить целые числа.

Вернуть сжатую строку, умноженную на добавленные целые числа.

def std(string):
    res =" "
    con =1
    res += string[0]
    for i in range((len(string)-1)):
        if (string[i] == string[i+1]):
            con+=1
        else:
            if (con>1):
                res += str(con)
                res+=string[i+1]
                con =1
            if (con>1):
                res+= str(con)
            return res

print(std('aabbb3cccc2d'))

Я написал эту программу и получил результат a2b.

Ожидаемый результат: a2b3c4d1a2b3c4d1a2b3c4d1a2b3c4d1a2b3c4d1. Может ли кто-нибудь сказать мне, где я ошибаюсь?

1 Ответ

0 голосов
/ 17 июня 2020
• 1000 1007 *

Вы только проверяете, равна ли следующая буква, и больше не ищите

Если вы l oop len(string) - 1, вы никогда не проверяете последний символ

Вы не проверяете, является ли ваш символ di git или нет, поэтому вы не можете отслеживать, сколько раз ваша строка будет умножена в конце

Я наткнулся на это решение, так как не смог исправить ваше, надеюсь, это поможет.

def std(string):
    multiplier = 0
    final_string = ""
    jumper = 0

    for i in range(len(string)):
        if jumper:
            jumper -= 1
            continue

        if string[i].isdigit():
            multiplier += int(string[i])
            continue    

        charMultiplier = 0
        for j in range(i + 1, len(string)):
            if(string[i] == string[j]):
                charMultiplier += 1                    
            else:
                break      

        final_string += string[i]       
        final_string += str(charMultiplier + 1)

        jumper += charMultiplier

    final_string = final_string * multiplier

    return final_string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...