Твой алгоритм работает за О(n*k), где n - длина последовательности. Можно за O(n)