Тема: Алгоритм Кнута-Морриса-Пратта
Действительно, когда мы найдём такую длину j, то нам будет снова достаточно сравнить символы s[i+1] и s[j] — если они совпадут, то pi[i+1] = j.
Я думаю, что нужно pi[i+1] = j+1, поскольку был образец длины j, то есть s[0...j-1] = s[i-j+1, i] и совпали символы s[i+1] и s[j], то есть теперь s[0...j] = s[i-j+1, i+1].