¿Cómo invertir una cadena en Java?

| Última modificación: 5 de julio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Invertir una cadena de texto es una tarea común en la programación y es un excelente ejercicio para familiarizarse con la manipulación de cadenas en Java. En este artículo, te mostraremos cómo invertir una cadena en Java utilizando diferentes métodos, desde el enfoque tradicional con bucles hasta el uso de clases como StringBuilder y StringBuffer. ¡Vamos a ello!

¿Qué es una cadena inversa?

Una cadena inversa es simplemente una cadena de texto leída desde el último carácter hasta el primero. Esto significa que el primer carácter de la cadena original se convierte en el último carácter de la cadena inversa y así sucesivamente. Este proceso puede ser útil en diversas aplicaciones, como la verificación de palíndromos (palabras o frases que se leen igual de adelante hacia atrás y viceversa), capicuas (igual, pero con números), o la encriptación de datos.

Por ejemplo, si tenemos la cadena “Java es genial”, la cadena inversa será “laineg se avaJ”. Aquí puedes ver algunos ejemplos adicionales de cómo se invierte una cadena:

  • Cadena original: “Hola Mundo”
  • Cadena inversa: “odnuM aloH”
  • Cadena original: “12345”
  • Cadena inversa: “54321”

Invertir una cadena en Java puede parecer trivial, pero es un buen ejercicio para entender la manipulación de texto en programación. Además, dominar este concepto te permitirá abordar problemas más complejos de manera eficiente.

Métodos para invertir una cadena en Java

Método 1: Usar un bucle for

El primer enfoque para invertir una cadena en Java es utilizar un bucle for para iterar a través de la cadena desde el final hasta el principio y construir la cadena inversa.

//Invertir una cadena en Java
public class StringReversal {
    public static String reverseString(String input) {
        if (input == null) {
            return null;
        }

        String reversed = "";
        for (int i = input.length() - 1; i >= 0; i--) {
            reversed += input.charAt(i);
        }
        return reversed;
    }

    public static void main(String[] args) {
        String myString = "Java es genial";
        System.out.println("Cadena original: " + myString);
        System.out.println("Cadena inversa: " + reverseString(myString));
    }
}

Explicación:

  1. Validación de la entrada: Primero, comprobamos si la cadena de entrada es null.
  2. Construcción de la cadena inversa: Usamos un bucle for para recorrer la cadena desde el último carácter hasta el primero, concatenando cada carácter a una nueva cadena llamada reversed.

Método 2: Usar StringBuilder

Java no proporciona un método reverse() para la clase String, pero otras clases como StringBuilder y StringBuffer tienen este método. Veamos cómo hacerlo con StringBuilder.

//Invertir una cadena en Java
public class StringBuilderReversal {
    public static void main(String[] args) {
        String input = "Java es genial";
        StringBuilder sb = new StringBuilder(input);
        System.out.println("Cadena original: " + input);
        System.out.println("Cadena inversa: " + sb.reverse().toString());
    }
}

Explicación:

  1. Convertir la cadena a StringBuilder: Creamos una instancia de StringBuilder a partir de la cadena de entrada.
  2. Invertir la cadena: Utilizamos el método reverse() de StringBuilder para invertir la cadena.
  3. Convertir de vuelta a String: Convertimos el StringBuilder de nuevo a una String utilizando el método toString().

Método 3: Usar StringBuffer

StringBuffer es similar a StringBuilder, pero es seguro para hilos. Aquí tienes un ejemplo de cómo invertir una cadena usando StringBuffer.

//Invertir una cadena en Java
public class StringBufferReversal {
    public static void main(String[] args) {
        String input = "Java es genial";
        StringBuffer sb = new StringBuffer(input);
        System.out.println("Cadena original: " + input);
        System.out.println("Cadena inversa: " + sb.reverse().toString());
    }
}

Explicación:

El proceso es idéntico al de StringBuilder, pero utilizamos StringBuffer en su lugar.

Comparación de métodos

A continuación, comparamos los tres métodos mencionados:

MétodoVentajasDesventajas
Bucle forFácil de entender y sin dependencias externasMenos eficiente para cadenas largas
StringBuilderEficiente y simple de usarNo es seguro para hilos
StringBufferSeguro para hilosLigeramente más lento que StringBuilder

El bucle for es un método sencillo y fácil de entender, sin dependencias externas, pero puede ser menos eficiente para cadenas largas debido a la concatenación repetitiva. Por otro lado, StringBuilder ofrece una solución más eficiente y fácil de usar, especialmente para operaciones repetitivas con cadenas, pero no es seguro para hilos, lo que significa que no es adecuado para entornos multihilo. StringBuffer, en cambio, es similar a StringBuilder pero es seguro para hilos, lo que lo hace adecuado para aplicaciones multihilo, aunque puede ser ligeramente más lento debido a la sincronización de hilos.

Hemos visto cómo invertir una cadena en Java utilizando varios métodos. Dependiendo de tus necesidades, puedes elegir el método más adecuado. Usar StringBuilder es generalmente la opción más eficiente y sencilla, mientras que StringBuffer es ideal para aplicaciones multihilo.

¿Te gustaría profundizar más en la manipulación de cadenas y otros aspectos avanzados de Java? En KeepCoding, nuestro Bootcamp de Programación con Java te enseñará técnicas avanzadas de programación que te convertirán en un desarrollador altamente competente. Con nuestra formación práctica e intensiva, estarás listo para enfrentarte a los desafíos del sector IT, que ofrece grandes oportunidades profesionales, salarios competitivos y estabilidad laboral. ¡Inscríbete en KeepCoding y transforma tu futuro hoy mismo!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado