# LeetCode 763: Partition Labels — Step-by-Step Visual Trace

**Medium** — Hash Table | Two Pointers | String | Greedy

## The Problem

Given a string s, partition it into as many parts as possible so that each letter appears in at most one part, and return a list of integers representing the size of these parts.

## Approach

First, record the last occurrence index of each character. Then iterate through the string, keeping track of the furthest last index needed to include all characters seen so far. When the current index reaches this furthest point, we can create a partition.

**Time:** O(n) · **Space:** O(1)

## Code

```python
class Solution:
    def partitionLabels(self, s: str) -> List[int]:
        last_index = {}

        for i, char in enumerate(s):
            last_index[char] = i

        result = []
        start, end = 0, 0

        for i, char in enumerate(s):
            end = max(end, last_index[char])

            if i == end:
                result.append(end - start + 1)
                start = end + 1

        return result
```

## Watch It Run

> **[Open interactive visualization](https://tracelit.dev/app?trace=0763_partition-labels)**

> **Try it yourself:** Open [TraceLit](https://tracelit.dev/app?trace=0763_partition-labels) and step through every line.

---

*Built with [TraceLit](https://tracelit.dev) — the visual algorithm tracer for LeetCode practice.*
