Programa Java para invertir un número y verificar si es un palíndromo

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");
    }
}
Producción

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

  1. Tome entrada en la variable BigInteger.
  2. Invierta el BigInteger dado usando el método inverso.
  3. 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");
    }
}
Producción

Reverse of n = 12345678999999999987654321
Palindrome = Yes

Complejidad de tiempo: O(log 10 (n)) donde n es el número de entrada.

Publicación traducida automáticamente

Artículo escrito por pragup y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *