Вот не нравится чем-то.
Непонятно, по какому закону расширять интервалы.
Не нравится тем, что никак не отражает существенную несимметричность ролей массивов (а задача подло провоцирует на симметричность).
Более правильный вариант выглядит так. Обозначим массивы как a и b, индексы - i и j.
Массив b в некотором роде главный. Массив a – играет роль генератора эталонных символов. Полный инвариант выглядит так: "для обработанной области массива b напечатаны все отличия, и из генератора "выбраны" все символы, встретившиеся (в нужном порядке) в b".
Отсюда логично следует тело цикла.
Берем очередной необработанный символ из массива b. Если он не совпадает с текущим символом генератора, то печатаем его. Иначе "забираем" символ из генератора (продвигаем вперед i). Конец если. Расширяем обработанную область (продвигаем вперед j).
Я трактовал последний 0 в массиве "a" как конец работы генератора. Другие авторы, не нарушая условий задачи, трактовали его как обычный символ, который никогда не встретится внутри массива b.