Повтор подстрок

Записать строку, алфавит которой состоит из 4 букв(a,b,c,d), в форме с количеством повторов. Вложенность подстрок приветствуется.

Примеры:

abbbcddaa становится ab3cd2a2
abcabcabcd -> (abc)3d
abbabb -> (ab2)2
ddddabcabccabccabccabc -> d4ab(cabc)4

Сам начал делать, но что-то сложность начинает расти. Как решить наиболее оптимально?

def compress(s):
    for j in range(len(s)):
        for i in range(j+1, len(s)):
            if s[j] == s[i]:
                diff = i - j
                ssum = 1
                for k in range(i, len(s), diff):
                    if s[j:i] != s[k:k+diff]:
                        break
                    ssum += 1
                if ssum > 1:
                    print(s[j:i], ssum, "times")
    return s

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