Dado un entero N de 32 bits . La tarea es invertir N , si el entero invertido se desborda, imprime -1 como salida.
Ejemplos
Entrada: N = 123
Salida: 321Entrada: N = -123
Salida: -321Entrada: N = 120
Salida: 21
Enfoque: A diferencia de los enfoques del Conjunto 1 del artículo, este problema se puede resolver simplemente usando una estructura de datos de 64 bits y un rango de tipo de datos int [-2^31, 2^31 – 1]
- Copie el valor del número dado N en una variable larga
- Comprobar si es negativo
- Ahora invierta el número largo dígito por dígito, y si en algún paso, su valor sale del rango del tipo int, devuelva 0 .
- Haz que el número resultante sea negativo si el número dado es negativo
- Nuevamente verifique que el número esté en el rango int. En caso afirmativo, devuelva 0 , de lo contrario, devuelva el número invertido.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ program for above approach #include <bits/stdc++.h> // Function to reverse digits in a number int reverseDigits(int N) { // Taking a long variable // to store the number long m = N; int neg = m < 0 ? -1 : 1; if (m * neg < pow(-2, 31) || m * neg >= pow(2, 31)) return 0; m = m * neg; long n = 0; while (m > 0) { if (n * 10 < pow(-2, 31) || n * 10 >= pow(2, 31)) return 0; n = n * 10 + m % 10; m = m / 10; } if (n * neg < pow(-2, 31) || n * neg >= pow(2, 31)) return 0; n = n * neg; return n; } // Driver Code int main() { int N = 5896; printf("Reverse of no. is %d", reverseDigits(N)); return 0; }
Java
// Java program for above approach class GFG { // Function to reverse digits in a number static int reverseDigits(int N) { // Taking a long variable // to store the number long m = N; int neg = m < 0 ? -1 : 1; if (m * neg < Math.pow(-2, 31) || m * neg >= Math.pow(2, 31)) return 0; m = m * neg; long n = 0; while (m > 0) { if (n * 10 < Math.pow(-2, 31) || n * 10 >= Math.pow(2, 31)) return 0; n = n * 10 + m % 10; m = m / 10; } if (n * neg < Math.pow(-2, 31) || n * neg >= Math.pow(2, 31)) return 0; n = n * neg; return (int) n; } // Driver Code public static void main(String args[]) { int N = 5896; System.out.println("Reverse of no. is " + reverseDigits(N)); } } // This code is contributed by Saurabh Jaiswal
Python3
# Python code for the above approach # Function to reverse digits in a number def reverseDigits(N): # Taking a long variable # to store the number m = N neg = -1 if m < 0 else 1 if (m * neg < (-2 ** 31) or m * neg >= (2 ** 31)): return 0 m = m * neg n = 0 while (m > 0): if (n * 10 < (-2 ** 31) or n * 10 >= (2 ** 31)): return 0 n = n * 10 + m % 10 m = (m // 10) if (n * neg < (-2 ** 31) or n * neg >= (2 ** 31)): return 0 n = n * neg return n # Driver Code N = 5896 print(f"Reverse of no. is {reverseDigits(N)}") # This code is contributed by gfgking
C#
// C# program for above approach using System; class GFG { // Function to reverse digits in a number static int reverseDigits(int N) { // Taking a long variable // to store the number long m = N; int neg = m < 0 ? -1 : 1; if (m * neg < Math.Pow(-2, 31) || m * neg >= Math.Pow(2, 31)) return 0; m = m * neg; long n = 0; while (m > 0) { if (n * 10 < Math.Pow(-2, 31) || n * 10 >= Math.Pow(2, 31)) return 0; n = n * 10 + m % 10; m = m / 10; } if (n * neg < Math.Pow(-2, 31) || n * neg >= Math.Pow(2, 31)) return 0; n = n * neg; return (int)n; } // Driver Code public static void Main() { int N = 5896; Console.Write("Reverse of no. is " + reverseDigits(N)); } } // This code is contributed by Samim Hossain Mondal.
Javascript
<script> // JavaScript code for the above approach // Function to reverse digits in a number function reverseDigits(N) { // Taking a long variable // to store the number let m = N; let neg = m < 0 ? -1 : 1; if (m * neg < Math.pow(-2, 31) || m * neg >= Math.pow(2, 31)) return 0; m = m * neg; let n = 0; while (m > 0) { if (n * 10 < Math.pow(-2, 31) || n * 10 >= Math.pow(2, 31)) return 0; n = n * 10 + m % 10; m = Math.floor(m / 10); } if (n * neg < Math.pow(-2, 31) || n * neg >= Math.pow(2, 31)) return 0; n = n * neg; return n; } // Driver Code let N = 5896; document.write(`Reverse of no. is ${reverseDigits(N)}`); // This code is contributed by Potta Lokesh </script>
Producción
Reverse of no. is 6985
Complejidad de Tiempo: O(D), donde D es el número de dígitos en N.
Espacio Auxiliar: O(1)