The purpose of this algorithm is to reverse a given string. It achieves this by advancing from the start of the string to the midpoint (or one before it) and swapping the current character with the one an equally distant from the end of the string. The string is treated as an array of characters during this process, and that array is converted back into a string when returned.
public class ReverseString { //Reverse the provided string. public static String reverse(String input) { //Turn the string into an array of characters so we don't //keep rebuilding immutable strings as we reverse the //contents. char[] chars = input.toCharArray(); //Advance from the beginning to the middle of the array. //Swap the current index (l) from the left side of the //array with the one equally distant from the end of the //right side (r). for (int l = 0; l < chars.length / 2; ++l) { int r = chars.length - 1 - l; swap(chars, l, r); } //Turn the array back into a string and return it. return new String(chars); } private static void swap(char[] a, int l, int r) { char c = a[r]; a[r] = a[l]; a[l] = c; } public static void main(String[] args) { //Test with even and odd number of characters. System.out.println(reverse("Hello World!")); System.out.println(reverse("Hello World")); } }