Java: Формирование строк в циклах
Еще одно использование циклов — формирование строк. Подобная задача нередко встречается в программировании. Она сводится к обычной агрегации через конкатенацию.
Есть одна задача, которая популярна на собеседованиях — это переворот строки. Ее можно решить множеством разных способов, но именно посимвольный перебор считается базовым:
App.reverse("Hexlet"); // "telxeH"Общая идея переворота состоит в следующем — нужно брать символы по очереди с начала строки и соединять их в обратном порядке. Давайте проверим, как это работает:
public static String reverse(String str) {
var i = 0;
// Нейтральный элемент для строк — это пустая строка
var result = "";
while (i < str.length()) {
// Соединяем в обратном порядке
result = str.charAt(i) + result;
i += 1;
}
return result;
}
var name = "Bran";
App.reverse(name); // "narB"
// Проверка нейтрального элемента
App.reverse(""); // ""Важно прочувствовать, как собирается сама строка — каждый следующий символ прикрепляется к результирующей строке слева, и в итоге строка оказывается перевернута.
Задание
Реализуйте такой же метод reverse(), но выполняющий обход строки не с первого элемента по последний, а наоборот, от последнего к первому. Общая структура функции при этом останется такой же. Изменится начальный индекс, условие окончания цикла, сборка новой строки и формирование нового индекса в цикле.
Ваше упражнение проверяется по этим тестам
import static org.assertj.core.api.Assertions.assertThat;
class Test {
public static void main(String[] args) {
assertThat(App.reverse("Bran")).isEqualTo("narB");
assertThat(App.reverse("")).isEqualTo("");
assertThat(App.reverse("Hexlet")).isEqualTo("telxeH");
}
}Решение учителя откроется через:
20:00
