Programa de números palíndromos en Java Usando el bucle while y for

⚡ Resumen inteligente

Programa de números palíndromos en Java Este método determina si un valor se lee igual de adelante hacia atrás que de atrás hacia adelante invirtiendo sus dígitos. El artículo presenta el algoritmo, una versión con bucle while, una versión con bucle for, un método basado en cadenas, recursión, casos límite y un análisis de complejidad con resultados verificados.

  • 🔁 Definición básica: Un número palíndromo permanece inalterado después de invertir sus dígitos, como ocurre con 131, 393 y 34043.
  • RevTécnica ersal: El operador módulo extracts es el último dígito y la división entera lo elimina, un dígito por pasada.
  • 🧮 Regla del acumulador: Cada pasada multiplica la suma acumulada por diez antes de sumar el recién extracdígito ted.
  • 🔂 Opción de bucle: Un bucle while y un bucle for producen resultados idénticos, siempre que la división aparezca exactamente una vez por iteración.
  • 🔤 Método de cadena: StringBuilder compara texto directamente en sentido inverso y funciona tanto con palabras como con números.
  • ⚠️ Casos extremos: Los valores de un solo dígito siempre son palíndromos, los valores negativos nunca lo son y los ceros finales rompen la comparación numérica.
  • 🇧🇷 Perfil de complejidad: Ambas versiones del bucle se ejecutan en un tiempo O(log n) proporcional al número de dígitos y utilizan un espacio adicional O(1).

Programa de números palíndromos en Java

¿Qué es un número palíndromo?

A Número de palíndromo Un número palíndromo permanece igual al invertirlo. Por ejemplo, 131. Al invertir sus dígitos, sigue siendo el mismo número. Un número palíndromo tiene simetría de reflexión respecto al eje vertical. La misma idea se aplica a una palabra que se escribe igual al invertir sus letras.

Ejemplos de números palíndromos en Java

121, 393, 34043, 111, 555, 48084

Ejemplos de palabras palíndromas

LOL, MADAM

Por definición, cada dígito del 0 al 9 es un palíndromo, ya que al invertir un dígito se obtiene el mismo dígito.

Algoritmo del número palíndromo

A continuación se muestra la lógica del algoritmo de números palíndromos en Java:

  • Obtenga el número de entrada que debe verificarse para ser un de canalización lateral.
  • Copia el número en una variable temporal e inviértelo.
  • Compara el número invertido y el original.
  • Si son iguales, el número es un “número palíndromo”.
  • De lo contrario, el número no es un “número palíndromo”.

La inversión en sí es la única parte que requiere atención. Dos operaciones aritméticas hacen todo el trabajo, y la tabla a continuación traces ellos por el valor 171.

Pasó a (número restante) pasadoDigit = a % 10 suma = (suma * 10) + últimoDigit a = a / 10
1 171 1 1 17
2 17 7 17 1
3 1 1 171 0

Tras la última pasada, la suma es 171, que es igual a la entrada original, por lo que se confirma que el número es un palíndromo.

Cómo comprobar si el número de entrada es palíndromo o no

A continuación se muestra un programa de palíndromos en Java con un bucle WHILE. El bucle continúa mientras queden dígitos, y las instrucciones print muestran el estado de cada variable durante cada iteración.

package com.guru99;

public class PalindromeNum {

    public static void main(String[] args)
    {

        int lastDigit, sum = 0, a;
        int inputNumber = 171; //It is the number to be checked for palindrome

        a = inputNumber;

        // Code to reverse a number
        while(a > 0)
        {   System.out.println("Input Number " + a);
            lastDigit = a % 10; //getting remainder
            System.out.println("Last Digit " + lastDigit);
            System.out.println("Digit " + lastDigit + " was added to sum " + (sum * 10));
            sum = (sum * 10) + lastDigit;
            a = a / 10;

        }

        // if the given number equals sum then the number is a palindrome, otherwise not
        if(sum == inputNumber)
            System.out.println("Number is palindrome ");
        else
            System.out.println("Number is not palindrome");

    }

}

Code Salida:

Input Number 171
Last Digit 1
Digit 1 was added to sum 0
Input Number 17
Last Digit 7
Digit 7 was added to sum 10
Input Number 1
Last Digit 1
Digit 1 was added to sum 170
Number is palindrome

Programa para verificar palíndromo usando el bucle for

A continuación se muestra un Java Programa para palíndromos usando un bucle for. El encabezado contiene la condición de salida y la división, por lo que el cuerpo del bucle no debe dividir de nuevo.

package com.guru99;

public class PalindromeNumForLoop {

    public static void main(String[] args)
    {

        int lastDigit, sum = 0, a;
        int inputNumber = 185; //It is the number to be checked for palindrome

        a = inputNumber;

        // Code to reverse a number
        for( ; a != 0; a /= 10 )
        {   System.out.println("Input Number " + a);
            lastDigit = a % 10; //getting remainder
            System.out.println("Last Digit " + lastDigit);
            System.out.println("Digit " + lastDigit + " was added to sum " + (sum * 10));
            sum = (sum * 10) + lastDigit;

        }

        // if the given number equals sum then the number is a palindrome, otherwise not
        if(sum == inputNumber)
            System.out.println("Number is palindrome ");
        else
            System.out.println("Number is not palindrome");

    }

}

Code Salida:

Input Number 185
Last Digit 5
Digit 5 was added to sum 0
Input Number 18
Last Digit 8
Digit 8 was added to sum 50
Input Number 1
Last Digit 1
Digit 1 was added to sum 580
Number is not palindrome

⚠️ Advertencia: Un error frecuente es mantener a = a / 10; dentro del cuerpo del bucle for mientras que el encabezado ya contiene a /= 10El número se divide dos veces en cada pasada, se omite la mitad de los dígitos y un palíndromo genuino como 121 se informa erróneamente como si no lo fuera.

Programa Palíndromo en Java Usando cadena Reverse

Al convertir el valor a texto, StringBuilder puede invertirlo en una sola llamada. Este mismo método también funciona con palabras, algo que el método numérico no puede hacer.

package com.guru99;

public class PalindromeString {

    public static boolean isPalindrome(String text) {
        // ignore case so MADAM and madam behave identically
        String clean = text.toLowerCase();
        String reversed = new StringBuilder(clean).reverse().toString();
        return clean.equals(reversed);
    }

    public static void main(String[] args) {
        System.out.println(isPalindrome("121"));
        System.out.println(isPalindrome("MADAM"));
        System.out.println(isPalindrome("Java"));
    }
}

Code Salida:

true
true
false

Programa Palíndromo en Java Utilizando la recursión

La recursión compara el par de caracteres más externo y luego se llama a sí misma en la sección central que se va reduciendo. El método se detiene cuando quedan menos de dos caracteres.

package com.guru99;

public class PalindromeRecursion {

    public static boolean isPalindrome(String text, int left, int right) {
        // base case: pointers met or crossed
        if (left >= right) {
            return true;
        }
        if (text.charAt(left) != text.charAt(right)) {
            return false;
        }
        return isPalindrome(text, left + 1, right - 1);
    }

    public static void main(String[] args) {
        String value = "34043";
        System.out.println(value + " is palindrome: "
                + isPalindrome(value, 0, value.length() - 1));

        String other = "12345";
        System.out.println(other + " is palindrome: "
                + isPalindrome(other, 0, other.length() - 1));
    }
}

Code Salida:

34043 is palindrome: true
12345 is palindrome: false

Casos extremos y comparación de métodos

Tres parámetros de entrada invalidan las implementaciones simples, por lo que cada versión debe probarse con ellos antes de su uso.

  1. Números negativos: Los valores como -121 nunca son palíndromos, porque el signo menos no tiene contraparte al final. Proteger con if (inputNumber < 0) return false;.
  2. Ceros finales: El valor 100 se invierte a 1, por lo que la comparación devuelve correctamente falso. Solo el número 0 pasa entre los valores que terminan en cero.
  3. Desbordamiento de enteros: RevIngresar un número entero grande como 1,999,999,999 puede exceder el rango de enteros. Declare la variable `sum` como `long` cuando la entrada pueda aproximarse al límite.

La tabla que aparece a continuación compara los cuatro enfoques que se muestran en esta página.

Método Complejidad de tiempo Complejidad espacial Obras por palabras Notas
Mientras bucle O (log n) O (1) No Demostración más clara de inversión de dígitos
En bucle O (log n) O (1) No Lógica idéntica, división solo en el encabezado.
StringBuilder inverso O (n) O (n) Sí: Código más corto, asigna una nueva cadena
La recursividad O (n) Pila O(n) Sí: Útil para debates en entrevistas sobre recursión.

El dígito extracEl patrón de ción utilizado aquí reaparece en muchos ejercicios. Continúe con el Serie de Fibonacci en Java, Java programa para comprobar si un número es primo, y Bubble Ordenar algoritmo en JavaPara la sintaxis del bucle en sí, revise el para cada bucle en Java y el más ancho Java tutoriales, y ver Java instrumentos de cuerda para el método basado en texto.

Preguntas Frecuentes

No. El signo menos aparece solo al principio, por lo que -121 al revés es 121-, lo cual nunca coincide. Agrega una condición de protección temprana que devuelva falso para cualquier valor menor que cero.

La multiplicación desplaza los dígitos ya reunidos un lugar a la izquierda, lo que libera la posición de las unidades para el nuevo dígito.tracdígito ted. Esto reconstruye el número en orden inverso.

El valor invertido puede exceder el máximo de enteros de 2147483647 y generar un resultado negativo. Declare el acumulador como un entero largo o compare los valores como cadenas de texto.

Lee el valor con Scanner y nextInt, y luego pásalo a la misma lógica inversa. Envuelve la lectura en un bloque try para que la entrada no numérica no provoque el fallo del programa.

Por lo general, sí, cuando se les pide que revisen el código explícitamente. Rara vez lo marcan sin que se les pregunte, así que siempre pruebe con un palíndromo conocido como 121 en lugar de confiar en un ejemplo que pase.

La pregunta evalúa el control de bucles, la aritmética de enteros y el razonamiento en casos límite en pocas líneas. También revela si el candidato verifica el código generado por la IA antes de enviarlo.

Resumir este post con: