Se puede decir que un número dado es de naturaleza palindrómica si el reverso del número dado es el mismo que el de un número dado. La longitud del número es log 10 (n), es decir, para BigIntegers que utilizan operaciones de string como la creación inversa y la comprobación del palíndromo tardarán log 10 (n) de tiempo.
A. Número bajo el límite int de Java
Ejemplo :
Input : n = 46355364 Output: Reverse of n = 46355364 Palindrome = Yes Input : n = 87476572465 Output: Reverse of n = 56427567478 Palindrome = No
Podemos revertir un número de varias maneras, a continuación se muestra la implementación iterativa para el mismo.
Algoritmo iterativo:
Input: number 1. Initialize reversed_number = 0 2. Loop while num ber > 0 a. Multiply reversed_number by 10 and add number % 10 to reversed_number reversed_number = reversed_number*10 + number %10; b. Divide number by 10 3. Return reversed_number
Ejemplo:
number = 1234 reversed_number= 0 reversed_number = reversed_number *10 + number%10 = 4 number = number/10 = 123 reversed_number = reversed_number*10 + number%10 = 20 + 6 = 43 number = number/10 = 12 reversed_number = reversed_number*10 + number%10 = 260 + 5 = 432 number = number/10 = 1 reversed_number = reversed_number*10 + number%10 = 265 + 4 = 4321 number = number/10 = 0
A continuación se muestra la implementación del enfoque anterior.
Java
// Java program to reverse a number // and find if it is a palindrome or not class GFG { // Iterative function to // reverse the digits of number static int reversNumber(int n) { int reversed_n = 0; while (n > 0) { reversed_n = reversed_n * 10 + n % 10; n = n / 10; } return reversed_n; } // Main function public static void main(String[] args) { int n = 123464321; int reverseN = reversNumber(n); System.out.println("Reverse of n = " + reverseN); // Checking if n is same // as reverse of n if (n == reverseN) System.out.println("Palindrome = Yes"); else System.out.println("Palindrome = No"); } }
Reverse of n = 123464321 Palindrome = Yes
Complejidad de tiempo: O(log 10 (n)) donde n es el número de entrada.
B. Entero grande: use la clase BigInteger
Ejemplo
Input : n = 12345678999999999987654321 Output: Reverse of n = 12345678999999999987654321 Palindrome = Yes
Acercarse
- Tome entrada en la variable BigInteger.
- Invierta el BigInteger dado usando el método inverso.
- Compare ambos BigIntegers usando el método compareTo().
A continuación se muestra la implementación del enfoque anterior.
Java
// Java program to reverse a number // and find if it is a palindrome or not import java.io.*; import java.math.BigInteger; class GFG { // Reverse Big Integer public static BigInteger reverse(BigInteger n) { String s = n.toString(); StringBuilder sb = new StringBuilder(s); return new BigInteger(sb.reverse().toString()); } // Main Function public static void main(String[] args) { BigInteger n = new BigInteger("12345678999999999987654321"); BigInteger reverseN = reverse(n); System.out.println("Reverse of n = " + reverseN); // Checking if n is same // as reverse of n if (n.compareTo(reverseN) == 0) System.out.println("Palindrome = Yes"); else System.out.println("Palindrome = No"); } }
Reverse of n = 12345678999999999987654321 Palindrome = Yes
Complejidad de tiempo: O(log 10 (n)) donde n es el número de entrada.