Для понимания кода: Я использую StringBuilder и StringBuffer классы для модификации строки. Метод StringBuilder.charAt(int); возвращает конкретный char из строки, метод StringBuffer.replace(int a, int b, String str); удаляет элементы с a по b, и вставляет на их место str. Все остальное прокомментировано в коде. Валидатор просит проверить, что я 2 раза использую System.setOut(); что я сделал; Лекция по этой теме: https://javarush.com/quests/lectures/questcore.level09.lecture07