Check if actual binary representation of a number is palindrome
Given a non-negative integer n. The problem is to check if binary representation of n is palindrome or not. Note that the actual binary representation of the number is being considered for palindrome checking, no leading 0’s are being considered.
Examples :
Input : 9 Output : Yes (9)10 = (1001)2 Input : 10 Output : No (10)10 = (1010)2
Approach: Following are the steps:
- Get the number obtained by reversing the bits in the binary representation of n. Refer this post. Let it be rev.
- If n == rev, then print “Yes” else “No”.
Implementation:
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> |
Output
Yes
Time Complexity: O(num), where num is the number of bits in the binary representation of n.
Auxiliary Space: O(1).
Please Login to comment...