Поскольку это выглядит как домашнее задание, я не собираюсь публиковать решение для кода, но я укажу вам правильное направление.
Ваш двойной цикл for создает бесконечный цикл. Вы устанавливаете i = j
, и оно недостаточно высоко, чтобы выйти из цикла (никогда не выходит за 17). В моей книге вложенные циклы обычно являются запахом кода, у вас есть кое-что, что должно быть разбито на несколько дополнительных функций (низкая сплоченность).
В этом случае вашей первой функцией должно быть разбиение строки на шаблоны. Ваши вложенные циклы for могут быть уменьшены до одного цикла, и каждый раз, когда шаблон найден, добавляйте его в Set<String>
вместо карты. Это предотвратит дублирование, поскольку набор может содержать только уникальные значения.
Затем вы можете перейти к следующей части, которая должна определить количество ваших паттернов. Помните, что в этом случае перебирайте строку и проверяйте совпадения. Вам нужно будет принять во внимание, что aa
также будет соответствовать aaa
при подсчете.