Было нелегко:) Итак, как я это понимаю - код работает, только если мы добавляем слово на букву л в начало списка. Потому что i итерируется дважды, верно? Один раз в
for (int i = 0; i < list.size(); i++)
, а второй раз, когда добавляем элемент
list.add(0,list.get(i));
                    i++;
. Таким образом, мы обойдем повторяющиеся элементы и начнем итерацию с нового. Это так? По мне, это очень сложная логика. А если я хочу добавить элемент в конец списка? Если написать
list.add(list.get(i));
                    i++;
на выход будет лоза, лира, вода, лоза, лоза, так как лоза будет повторятся. У кого-то есть идеи как реализовать без добавления слова в начало списка?