Ваше решение определенно неверно. Например. addddbc. Самая длинная неубывающая последовательность - это adddd, но это никогда не даст вам нерастущую последовательность. Оптимальным решением является abc и dddd (или ab ddddc, или ac ddddb).
Одним из решений является использование динамического программирования.
F (i, x, a, b) = 1, если существует неубывающая и не возрастающая комбинация из первых i букв x (x [: i]) такая, что последняя буква неубывающей части является, а не увеличивающаяся часть является б. Обе эти буквы равны NULL, если соответствующая подпоследовательность пуста.
В противном случае F (i, x, a, b) = 0.
F(i+1,x,x[i+1],b) = 1 if there exists a and b such that
a<=x[i+1] or a=NULL and F(i,x,a,b)=1. 0 otherwise.
F(i+1,x,a,x[i+1]) = 1 if there exists a and b such that
b>=x[i+1] or b=NULL and F(i,x,a,b)=1. 0 otherwise.
Initialize F(0,x,NULL,NULL)=1 and iterate from i=1..n
Как видите, вы можете получить F (i + 1, x, a, b) из F (i, x, a, b). Сложность: линейная по длине, полиномиальная по размеру алфавита.