Dado un entero no negativo n . El problema es comprobar si la representación binaria de n es palíndromo o no. Tenga en cuenta que la representación binaria real del número se está considerando para la verificación del palíndromo, no se están considerando los 0 iniciales.
Ejemplos:
Input : 9 Output : Yes (9)10 = (1001)2 Input : 10 Output : No (10)10 = (1010)2
Enfoque: Los siguientes son los pasos:
- Obtenga el número obtenido al invertir los bits en la representación binaria de n . Consulte esta publicación. Que sea rev .
- Si n == rev, imprima «Sí», de lo contrario, «No».
C++
// C++ implementation to check whether binary // representation of a number is palindrome or not #include <bits/stdc++.h> using namespace std; // function to reverse bits of a number unsigned int reverseBits(unsigned int n) { unsigned int rev = 0; // traversing bits of 'n' from the right while (n > 0) { // bitwise left shift 'rev' by 1 rev <<= 1; // if current bit is '1' if (n & 1 == 1) rev ^= 1; // bitwise right shift 'n' by 1 n >>= 1; } // required number return rev; } // function to check whether binary representation // of a number is palindrome or not bool isPalindrome(unsigned int n) { // get the number by reversing bits in the // binary representation of 'n' unsigned int rev = reverseBits(n); return (n == rev); } // Driver program to test above int main() { unsigned int n = 9; if (isPalindrome(n)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java code to check whether // binary representation of a // number is palindrome or not import java.util.*; import java.lang.*; public class GfG { // function to reverse bits of a number public static long reverseBits(long n) { long rev = 0; // traversing bits of 'n' // from the right while (n > 0) { // bitwise left shift 'rev' by 1 rev <<= 1; // if current bit is '1' if ((n & 1) == 1) rev ^= 1; // bitwise right shift 'n' by 1 n >>= 1; } // required number return rev; } // function to check a number // is palindrome or not public static boolean isPalindrome(long n) { // get the number by reversing // bits in the binary // representation of 'n' long rev = reverseBits(n); return (n == rev); } // Driver function public static void main(String argc[]) { long n = 9; if (isPalindrome(n)) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed by Sagar Shukla
Python3
# Python 3 implementation to check # whether binary representation of # a number is palindrome or not # function to reverse bits of a number def reverseBits(n) : rev = 0 # traversing bits of 'n' from the right while (n > 0) : # bitwise left shift 'rev' by 1 rev = rev << 1 # if current bit is '1' if (n & 1 == 1) : rev = rev ^ 1 # bitwise right shift 'n' by 1 n = n >> 1 # required number return rev # function to check whether binary # representation of a number is # palindrome or not def isPalindrome(n) : # get the number by reversing # bits in the binary # representation of 'n' rev = reverseBits(n) return (n == rev) # Driver program to test above n = 9 if (isPalindrome(n)) : print("Yes") else : print("No") # This code is contributed by Nikita Tiwari.
C#
// C# code to check whether // binary representation of a // number is palindrome or not using System; public class GfG { // function to reverse bits of a number public static long reverseBits(long n) { long rev = 0; // traversing bits of 'n' // from the right while (n > 0) { // bitwise left shift 'rev' by 1 rev <<= 1; // if current bit is '1' if ((n & 1) == 1) rev ^= 1; // bitwise right shift 'n' by 1 n >>= 1; } // required number return rev; } // function to check a number // is palindrome or not public static bool isPalindrome(long n) { // get the number by reversing // bits in the binary // representation of 'n' long rev = reverseBits(n); return (n == rev); } // Driver function public static void Main() { long n = 9; if (isPalindrome(n)) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by vt_m
PHP
<?php // PHP implementation to check // whether binary representation // of a number is palindrome or not // function to reverse bits of a number function reverseBits($n) { $rev = 0; // traversing bits of 'n' // from the right while ($n > 0) { // bitwise left shift 'rev' by 1 $rev <<= 1; // if current bit is '1' if ($n & 1 == 1) $rev ^= 1; // bitwise right shift 'n' by 1 $n >>= 1; } // required number return $rev; } // function to check whether // binary representation of a // number is palindrome or not function isPalindrome($n) { // get the number by reversing // bits in the binary representation // of 'n' $rev = reverseBits($n); return ($n == $rev); } // Driver code $n = 9; if (isPalindrome($n)) echo "Yes"; else echo "No"; return 0; // This code is contributed by mits ?>
Javascript
<script> // JavaScript program to check whether // binary representation of a // number is palindrome or not // function to reverse bits of a number function reverseBits(n) { let rev = 0; // traversing bits of 'n' // from the right while (n > 0) { // bitwise left shift 'rev' by 1 rev <<= 1; // if current bit is '1' if ((n & 1) == 1) rev ^= 1; // bitwise right shift 'n' by 1 n >>= 1; } // required number return rev; } // function to check a number // is palindrome or not function isPalindrome(n) { // get the number by reversing // bits in the binary // representation of 'n' let rev = reverseBits(n); return (n == rev); } // Driver code let n = 9; if (isPalindrome(n)) document.write("Yes"); else document.write("No"); </script>
Producción :
Yes
Complejidad de tiempo: O(num), donde num es el número de bits en la representación binaria de n .
Espacio Auxiliar: O(1).
Publicación traducida automáticamente
Artículo escrito por ayushjauhari14 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA