Invertir array en Java

Hola a todos, hoy os voy a explicar como podemos invertir un array en Java.

Puede ser que necesitemos invertir un array para nuestro algoritmo, por ejemplo, para saber si un número es capicúa.

Dado un array, crearemos un array para almacenar el array invertido.

Lo podemos hacer simplemente con un for, la idea es tener 2 variables donde una la usamos para recorrer el array original y otra para recorrer el array invertido, que ira del final hasta 0.

Veamos como sería en código con un array con los siguientes valores [1, 2, 3, 4, 5].


public class InvertirArray {

    public static void main(String[] args) {

        int array[] = {1, 2, 3, 4, 5};

        int invertido[] = new int[array.length];

        for (int i = invertido.length - 1, j = 0; i >= 0; i--, j++) {
            invertido[i] = array[j];
        }

        for (int i = 0; i < invertido.length; i++) {
            System.out.println(invertido[i]);
        }

    }

}

Este es el resultado:

En forma de función, seria así:


public class InvertirArray {

    public static void main(String[] args) {

        int array[] = {1, 2, 3, 4, 5};

        int invertido[] = invertirArray(array);

        if (invertido != null) {
            for (int i = 0; i < invertido.length; i++) { System.out.println(invertido[i]); } } } /** * Invierte los datos de un array * * @param array Array que contiene los datos * @return Devuelve un nuevo array con los datos invertidos */ public static int[] invertirArray(int array[]) { if (array == null) { return null; } int temp[] = new int[array.length]; for (int i = temp.length - 1, j = 0; i >= 0; i--, j++) {
            temp[i] = array[j];
        }

        return temp;
    }

}


El resultado seria el mismo:

También lo podemos hacer de forma recursiva:


import java.util.Scanner;

public class InvertirCadena {

    public static void main(String[] args) {

        Scanner sn = new Scanner(System.in);
        sn.useDelimiter("\n");

        // Pedimos una cadena y la convertimos a minisculas
        System.out.println("Escribe una cadena");
        String cadena = sn.next().toLowerCase();

        String cadenaInvertida = invertirPalabraRec(cadena, cadena.length() - 1);

        System.out.println("La cadena " + cadena + " invertida es: " + cadenaInvertida);

    }

    /**
     * Invierte una palabra
     *
     * @param palabra Palabra a invertir
     * @param longitud Longitud de la palabra
     * @return palabra invertida
     */
    public static String invertirPalabraRec(String palabra, int longitud) {

        if (longitud == 0) {
            return palabra.charAt(longitud) + "";
        } else {
            return palabra.charAt(longitud) + (invertirPalabraRec(palabra, longitud - 1));
        }

    }

}


Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.