Это не чище, но это хорошая подготовка к более сложным вещам, и это хороший пример абстракции ...
Можно использовать аргумент последовательностей Давенпорта-Шинцеля. Рассмотрим регион выше линии вашей зоны. Каждая линия становится лучом, а на самом деле - двумя лучами, поскольку мы рассматриваем левую и правую стороны как разные. Сканируйте границы этой зоны слева направо, записывая, с какими лучами вы сталкиваетесь. Это последовательность, определенная более 2n символов, и шаблон abab недопустим. Таким образом, длина последовательности составляет не более 2 (2n) -1 = 4n-1. Применяя его к зоне ниже линии, подразумевается граница вида 8n.
Теперь доказать, что последовательность символов без ... a..b..a..b ... как подпоследовательность из n символов имеет длину 2n-1, легко. действительно, рассмотрим два последовательных появления одного и того же персонажа, которые ближе всего друг к другу в этой последовательности. Очевидно, что между этими двумя символами каждый символ должен быть уникальным. Рассмотрим такой символ и заметим, что если он появится где-либо еще в строке, мы получим запрещенную подпоследовательность. Таким образом, этот символ появляется ровно один раз в строке. Удалите его и при необходимости удалите дополнительный символ, если вы создали два последовательных идентичных символа. А именно, удаление символа из строки сокращает его на 2, поэтому максимальная длина строки составляет 2n-1.