En este post voy a explicar dos maneras de invertir o “reversear” una cadena en Java. Es decir, dada una cadena, obtener la cadena al revés o la cadena invertida.
Estos dos métodos para invertir una cadena en Java funcionan igual pero están programados de distinta manera. El primero utiliza un ciclo for para iterar la cadena, y el segundo método llama a una función de la clase StringBuilder.
Nota: recomiendo leer cómo escanear datos por teclado en Java.
Algoritmo para invertir una cadena en Java
El algoritmo es sencillo, hay que recorrer la cadena original carácter por carácter y en cada iteración concatenar el carácter a otra cadena limpia. Eso sí, la iteración debe ser al revés; es decir, empezar por el final de la cadena.
Pongamos de ejemplo la palabra “hola“. Si la recorremos al revés, comenzamos por la letra a y la concatenamos a la nueva; luego hacemos lo mismo con la l, la o y la h. Finalmente la nueva cadena tendrá la palabra aloh.
Para obtener el carácter en determinada posición se usa charAt
, y para concatenar se utiliza el operador +=
.
De esta manera podemos invertir una cadena en Java. Ya veremos otro método que no usa ciclos y que llama a una función de StringBuilder
.
Invertir cadena en Java con ciclos
Veamos el primer método para invertir una cadena en Java. Aquí el código:
/**
Invertir una cadena en Java, método 1
@author parzibyte
*/
class Main {
public static void main(String[] args) {
String cadena = "Programando en Java desde parzibyte.me";
// Esta será la cadena invertida, primero está vacía
String invertida = "";
// Recorremos la original del final al inicio
for (int indice = cadena.length() - 1; indice >= 0; indice--) {
// Y vamos concatenando cada carácter a la nueva cadena
invertida += cadena.charAt(indice);
}
System.out.println("Cadena original: " + cadena);
System.out.println("Cadena invertida: " + invertida);
}
}
Declaramos una cadena (que puede venir de cualquier lugar) y una cadena vacía. Luego recorremos la primera de fin a principio (para obtener su longitud usamos length()
) y concatenamos. Finalmente imprimimos la cadena invertida.
Invertir cadena con StringBuilder
Ahora veamos el segundo método que no lleva ninguna codificación de algoritmos, sino una simple llamada a un método de StringBuilder.
/**
Invertir una cadena en Java, método 2
@author parzibyte
*/
class Main {
public static void main(String[] args) {
String cadena = "Programando en Java desde parzibyte.me";
// Crear un StringBuilder a partir de la cadena
StringBuilder stringBuilder = new StringBuilder(cadena);
// Y llamar al método reverse de StringBuilder (lo convertimos a cadena con toString)
String invertida = stringBuilder.reverse().toString();
System.out.println("Cadena original: " + cadena);
System.out.println("Cadena invertida: " + invertida);
}
}
Como vemos, la clase StringBuilder (que sirve para muchísimas cosas más) ya tiene un método llamado reverse
, el cual solamente tenemos que llamar.
Eso sí, eso no regresa una cadena, por eso tenemos que llamar a toString
.
Probar y descargar ejercicios
Puedes descargar el código fuente y probarlo por ti mismo; asegúrate de instalar Java y opcionalmente instala NetBeans.
Eso es todo por el momento. Te invito a ver más sobre Java aquí.