У меня есть трудности с тем, как использовать RLE для последовательностей символов.
Например, я могу выполнить кодирование RLE для таких строк, как
"ASSSAAAEERRRRRRRR"
который будет преобразован в:
"A1S3A3E2R8".
Но я хотел бы выполнить RLE для таких строк, как
"XXXYYYYY(1ADEFC)(EDCADD)(1ADEFC)(1ADEFC)(1ADEFC)"
который будет преобразован в:
"X3Y5(1ADEFC)1(EDCADD)1(1ADEFC)3"
Есть ли способ добраться до него? Эта работа становится немного проще, потому что длинные строки всегда следуют в скобках. Не могли бы вы посоветовать сделать это на C++?
Если есть лучший способ хранения значений, чем использование скобок, было бы здорово, если бы вы меня порекомендовали.
gzip
уже хорошо обнаруживает и сжимает повторяющиеся шаблоны, а также повторяющиеся символы. Это в основном то, что делает алгоритм LZ77, а LZ77 — это первый шагgzip
сжатия. - person NPE   schedule 09.10.2011