Во-первых, для ясности в алгоритме я собираюсь заменить цифры на буквы: Z, A, B. Теперь ввод можно представить в виде простой строки: «ZAABB». Также для ясности я собираюсь вставить точку в каждой позиции, для интервала: ".Z.A.A.B.B.".
Это проблема балансировки символов, достаточно простая для решения. Итерация по массиву, отслеживание избытка в каждой позиции. Z
не меняет счет; A
приращения; B
декременты. Это дает нам
"00011221100".
Теперь, извлеките альтернативные значения, количество в каждой "прокладке", периоды:
".Z.A.A.B.B."
"0 0 1 2 1 0"
Отсюда просто найти подходящее количество. Каждая пара совпадений дает вам индексы подстроки с одинаковым количеством A
и B
. У вас есть три пары из 0 совпадений и одна пара из 1 совпадений, что дает подстроки
" 0 0 1 2 1 0" Z
" 0 0 1 2 1 0 " Z A A B B
"0 0 1 2 1 0 " A A B B
"0 0 1 2 1 0" A B
Это достаточно ясно для реализации?