Мой код. Вывод в консоль на мой взгляд соответствует условию. Что не так?
public static void main(String[] args) {
        String string = "Учиться, учиться и еще раз учиться! ";

        System.out.println(addTo(string, new String[]{"Под ", "лежачий ", "камень ", "вода ", "не ", "течет"}));
        System.out.println(replace(string, ", ", 16, 27));
    }

    public static StringBuilder addTo(String string, String[] strings) {
        //напишите тут ваш код
        String nextText = Arrays.toString(strings); //получаем массив слов.
        StringBuilder text = new StringBuilder(string);
        text.append(nextText); //добавляем массив слов.
        int index = text.indexOf("[");
        text.replace(index,index+1, "");
        int lastIndex = text.indexOf("]");
        text.replace(lastIndex, lastIndex+1, ""); //убираем квадратные скобки
        int stop = text.indexOf("!"); //определяем индекс выхода из цикла.
        for (;text.lastIndexOf(",") > stop; ) { //запускаем цикл на удаление запятых из массива строк.
            int i = text.lastIndexOf(", ");
            text = text.replace(i, i+2, "");
        }
        return text;
    }

    public static StringBuilder replace(String string, String str, int start, int end) {
        //напишите тут ваш код
        StringBuilder text = new StringBuilder(string);
        return text.replace(start, end,str);
    }
}

вывод в консоль