Rechecking contiguous characters (as in run length encoding)
If a Run only retains characters and sizes in an array, it seems as though you only need to find the indices corresponding to changedOffset and changedOffset + changedLength, and then potentially change the sizes of the characters in the indices to the right and left by simple addition. That is, if you have an array of Runs:
$$[(x,1),(y,2),(a,2),(b,1),(c,1),(z,2),(x,1)]$$
for alterArray("ac_zz",3,4), it is first determined that the $a$ and $c$ are the beginning and ending characters (the $b$ is eliminated). This is done by simply adding: $1+2=3$ (from the $1x$ and $2y$) and $2+1+1=4$ (from the $2a,1b,$ and $1c$).

Then you check whether either side has to be combined: on the left side, the $y$ is not affected; on the right side, the $z$ is affected and so we add $2+2=4z$. The $x$'s are never checked.