Una cadena se puede convertir a una matriz de caracteres y la matriz se invierte en bucle desde el final hasta el comienzo.
StringBuilder toReturn = new StringBuilder(); char[] tab = input.toCharArray(); for( int i = tab.length-1 ; i >= 0 ; i--){ toReturn.append( tab[i] ); } return toReturn.toString();
Este ejemplo crea un método llamado reverse que convierte un String en un CharArray. Hace un bucle en todos los caracteres desde el último hasta el primero y lo agrega a un StringBuilder
. La salida se devuelve.
Este método se llama con 2 cadenas de muestra. El primer método inverso se llama dos veces con la salida de la primera llamada que muestra que la salida es la misma que la entrada.
public class StringReverse { public static String reverse(String input){ StringBuilder sb = new StringBuilder(); char[] tab = input.toCharArray(); for( int i = tab.length-1 ; i >= 0 ; i--){ sb.append( tab[i] ); } return sb.toString(); } public static void main(String[] argv) { String test = "This is a test"; // Call reverse String output = reverse( test ); System.out.println( test + " => " + output ); // Same test calling reverse twice System.out.println( test + " => " + reverse( test ) + " => " + reverse(reverse( test )) ); // With Numbers test = "0123456789"; System.out.println( test + " => " + reverse( test ) ); } }
This is a test => tset a si sihT This is a test => tset a si sihT => This is a test 0123456789 => 9876543210