Уже есть около 20 ответов, но я просто добавлю свой рекурсивный алгоритм. Это может быть немного многословно, но это по крайней мере читабельно.
public static String reverseString(String str) {
return reverseString("", str);
}
private static String reverseString(String result, String original) {
if (original.length() == 0) {
return result;
} else {
int length = original.length();
String lastLetter = original.substring(length - 1, length);
original = original.substring(0, length - 1);
return reverseString(result + lastLetter, original);
}
}
Код в основном рекурсивно берет конец строки и перемещает его вперед. Например, если строка, которую мы хотим изменить, - это «jam», то каждый раз, когда вызывается вспомогательный метод, строки result и original выглядят следующим образом:
// result: original:
// "" jam
// m ja
// ma j
// maj ""