Tries & String Matching · 12 min · free with an account

Run-Length Encoding: Mental Model

Lesson preview · about 30%

Group maximal adjacent equal symbols and emit the symbol with its run length.

Core idea

Preserve the invariant first; the implementation is a consequence of it.

Start with the idea

Begin with the concrete question: Encode consecutive characters as character followed by count. For the visible input aaabbcaaaa, the stated result is a3b2c1a4. Before reading code, name the smallest piece of information that must survive from one step to the next. String algorithms compare symbols or prefixes, but a Rust String is UTF-8 bytes. State whether the task means bytes, scalar values, or grapheme clusters. That is the mental model for Run-Length Encoding; it gives you a reason for each update instead of a line of code to memorise.

The core mechanism is this: Group maximal adjacent equal symbols and emit the symbol with its run length. Treat it as a claim to test after every operation. Write down the state before the first operation, update it once, and ask which part of the claim is still true. If an item is skipped, inserted, or removed, explain why that action cannot destroy an answer that should be retained. A useful trace has columns for the current input position, the state before the step, the action, and the state afterward. Use the visible sample until the expected result becomes inevitable rather than merely plausible.

Now inspect the Rust sketch, not just its final expression. The supplied Rust sketch is a starting point. Identify what it stores, how one iteration changes it, and whether it already solves the exact task or only demonstrates a related operation. Use bytes only when the input contract permits byte-wise matching.

Keep learning, for free

The rest of this lesson is waiting for you.

Create a free account to read the complete explanation, see the infographic, explore the code, and try the exercises. All 742 lessons and algorithm steps are included.

No payment details. Your account opens the complete Academy.

← All lessons in Algorithms