Каждый алгоритм, способный преобразовывать данные таким образом, чтобы он занимал меньше памяти, называется сжатием. Пусть это будет без потерь или с потерями.
например. (сжатая форма для "данного примера" : -) )
Ниже приведена простая форма, называемая длиной кодирования, короткое RLE:
a,a,a,b,c -> 3a,1b,1c
Как видите, все последующие одинаковые символы сжаты в один.
Вы также можете искать последующие паттерны, которые намного сложнее:
a,b,a,b,a,c --> 2(a,b),1(a),1(c)
Существует множество литературы и веб-источников об алгоритмах сжатия, вы должны использовать их для более глубокого обзора.