RLE steht für Run-Length Encoding und ist sicher mit Abstand der einfachste Algorithmus um Daten zu komprimieren. Wie er funktioniert, erklärt man am einfachsten mit einem Beispiel:
Eingabe: aaaaabbcddddddd
Ausgabe: 5a2bc7d
Wenn es also mehrere gleiche Zeichen hintereinander gibt, wird einfach die Anzahl und das Zeichen nur einmal geschrieben. Die Ausgabe wäre also praktisch so wie man es lesen würde (also anstatt "a-a-a-a-a" würde man sagen "fünf a").
Bedingung ist, dass nur die Standard-Lib (also alles was mit "std::" anfängt) benutzt werden darf, und es alles mit einer foreach-Schleife gemacht werden muss (der Einfachheit halber weil mein Anwendungsfall für hier zu komplex wäre :D) und keine regulären Ausdrücke verwendet werden können (weil der String auch nur eine Vereinfachung ist).
std::string eingabe{"aaaaabbcddddddd"};
std::string ausgabe{};
for (const char& ch : eingabe) {
//ausgabe += // ...
}
Das ist keine Hausaufgabe oder so etwas sondern für ein kleines Hobbyprojekt. Also wenn ihr Ahnung habt, bitte nicht einfach nicht antworten, weil ihr denkt ihr macht damit meine Hausaufgaben weil das nicht der Fall ist 😂