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.
¿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.
- 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;. - 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.
- 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.

