исправить ошибки в коде, сохранив стилистику
Задача 1. Интерфейс функции должен быть в точности таким, как написано в задании: не
public static int subsequence(List String whole, List String part)
а
public static E int subsequence(List E whole, List E part)
то есть списки-аргументы - это списки из любых объектов, не обязательно строк. При вызове можно передавать списки строк, а можно списки целых или списки символов или списки массивов - чего угодно при условии, что типы элементов - одни и те же, то есть нельзя в списке из строк искать подсписок из чисел. Алгоритм Рабина-Карпа может работать для любых последовательностей. Мы разбирали на примере последовательности символов (то есть строк) и вычисляли хеши последовательностей символов. Но точно так же можно вычислять хеши последовательностей любых объектов на базе значений hashCode для этих объектов. Именно в этом и состоит задание. Далее, если на некотором шаге хеши оказывались равными, то мы проверяли совпадение символов. Точно так же можно проверять совпадение последовательностей любых объектов, только вместо сравнения символов надо будет сравнивать объекты с помощью метода equals. А у вас какая-то ерунда происходит.
Задача 2. Результат выдается правильный, но вместо параллельного поиска подстрок с начала исходной строки вы последовательно ищете все подстроки, а затем выбираете минимальное из найденных значений индексов. Это приводит к тому, что вам приходится просматривать всю исходную строку многократно. А если какой-то из подстрок вообще в тексте нет, то текст приходится просмотреть до самого конца, даже несмотря на то, что, возможно, одна из подстрок уже найдена. А надо просто модифицировать алгоритм Рабина - Карпа так, чтобы, продвигаясь по исходной строке, сравнение происходило бы "параллельно" со всеми подстроками.