Check if binary representations of two numbers are anagram - GeeksforGeeks

28 Mar, 2022
Given two numbers you are required to check whether they are anagrams of each other or not in binary representation.Examples:  
Input : a = 8, b = 4 
Output : Yes
Binary representations of both
numbers have same 0s and 1s.

Input : a = 4, b = 5
Output : No
 
Simple Approach:  
Find Binary Representation of ‘a’ and ‘b’ using simple decimal to binary representation technique.Check if two binary representations are an anagram
Find Binary Representation of ‘a’ and ‘b’ using simple decimal to binary representation technique.
Check if two binary representations are an anagram
 
C++
Java
Python3
C#
Javascript
// A simple C++ program to check if binary// representations of two numbers are anagram.#include <bits/stdc++.h>#define ull unsigned long long intusing namespace std; const int SIZE = 8 * sizeof(ull); bool bit_anagram_check(ull a, ull b){    // Find reverse binary representation of a    // and store it in binary_a[]    int i = 0, binary_a[SIZE] = { 0 };    while (a > 0) {        binary_a[i] = a % 2;        a /= 2;        i++;    }     // Find reverse binary representation of b    // and store it in binary_a[]    int j = 0, binary_b[SIZE] = { 0 };    while (b > 0) {        binary_b[j] = b % 2;        b /= 2;        j++;    }     // Sort two binary representations    sort(binary_a, binary_a + SIZE);    sort(binary_b, binary_b + SIZE);     // Compare two sorted binary representations    for (int i = 0; i < SIZE; i++)        if (binary_a[i] != binary_b[i])            return false;     return true;} // Driver codeint main(){    ull a = 8, b = 4;    cout << bit_anagram_check(a, b) << endl;    return 0;}
// A simple Java program to check if binary// representations of two numbers are anagramimport java.io.*;import java.util.*; class GFG{    public static int SIZE = 8;         // Function to check if binary representation    // of two numbers are anagram    static int bit_anagram_check(long a, long b)    {        // Find reverse binary representation of a        // and store it in binary_a[]        int i = 0;        long[] binary_a = new long[SIZE];        Arrays.fill(binary_a, 0);        while (a > 0)        {            binary_a[i] = a%2;            a /= 2;            i++;        }          // Find reverse binary representation of b        // and store it in binary_a[]        int j = 0;        long[] binary_b = new long[SIZE];        Arrays.fill(binary_b, 0);        while (b > 0)        {            binary_b[j] = b%2;            b /= 2;            j++;        }          // Sort two binary representations        Arrays.sort(binary_a);        Arrays.sort(binary_b);          // Compare two sorted binary representations        for (i = 0; i < SIZE; i++)            if (binary_a[i] != binary_b[i])                return 0;          return 1;    }     // driver program    public static void main (String[] args)    {        long a = 8, b = 4;        System.out.println(bit_anagram_check(a, b));    }} // Contributed by Pramod Kumar
# A simple Python program to check if binary# representations of two numbers are anagram.SIZE = 8def bit_anagram_check(a, b):     # Find reverse binary representation of a    # and store it in binary_a[]    global size     i = 0    binary_a = [0] * SIZE    while (a > 0):        binary_a[i] = a % 2        a //= 2        i += 1     # Find reverse binary representation of b    # and store it in binary_a[]    j = 0    binary_b = [0] * SIZE    while (b > 0):        binary_b[j] = b % 2        b //= 2        j += 1     # Sort two binary representations    binary_a.sort()    binary_b.sort()     # Compare two sorted binary representations    for i in range(SIZE):        if (binary_a[i] != binary_b[i]):            return 0    return 1 # Driver codeif __name__ == "__main__":     a = 8    b = 4    print(bit_anagram_check(a, b))     # This code is contributed by ukasp.
// A simple C# program to check if// binary representations of two// numbers are anagramusing System; class GFG{public static int SIZE = 8; // Function to check if binary// representation of two numbers// are anagrampublic static int bit_anagram_check(long a,                                    long b){    // Find reverse binary representation    // of a and store it in binary_a[]    int i = 0;    long[] binary_a = new long[SIZE];    Arrays.Fill(binary_a, 0);    while (a > 0)    {        binary_a[i] = a % 2;        a /= 2;        i++;    }     // Find reverse binary representation     // of b and store it in binary_a[]    int j = 0;    long[] binary_b = new long[SIZE];    Arrays.Fill(binary_b, 0);    while (b > 0)    {        binary_b[j] = b % 2;        b /= 2;        j++;    }     // Sort two binary representations    Array.Sort(binary_a);    Array.Sort(binary_b);     // Compare two sorted binary    // representations    for (i = 0; i < SIZE; i++)    {        if (binary_a[i] != binary_b[i])        {            return 0;        }    }     return 1;} public static class Arrays{public static T[] CopyOf<T>(T[] original,                            int newLength){    T[] dest = new T[newLength];    System.Array.Copy(original, dest, newLength);    return dest;} public static T[] CopyOfRange<T>(T[] original,                                 int fromIndex,                                 int toIndex){    int length = toIndex - fromIndex;    T[] dest = new T[length];    System.Array.Copy(original, fromIndex,                         dest, 0, length);    return dest;} public static void Fill<T>(T[] array, T value){    for (int i = 0; i < array.Length; i++)    {        array[i] = value;    }} public static void Fill<T>(T[] array, int fromIndex,                           int toIndex, T value){    for (int i = fromIndex; i < toIndex; i++)    {        array[i] = value;    }}}  // Driver Codepublic static void Main(string[] args){    long a = 8, b = 4;    Console.WriteLine(bit_anagram_check(a, b));}} // This code is contributed by Shrikant13
<script>// A simple Javascript program to check if binary// representations of two numbers are anagram         let SIZE = 8;         // Function to check if binary representation    // of two numbers are anagram    function bit_anagram_check(a,b)    {        // Find reverse binary representation of a        // and store it in binary_a[]        let i = 0;        let binary_a = new Array(SIZE);        for(let i=0;i<SIZE;i++)        {            binary_a[i]=0;        }        while (a > 0)        {            binary_a[i] = a%2;            a = Math.floor(a/2);            i++;        }           // Find reverse binary representation of b        // and store it in binary_a[]        let j = 0;        let binary_b = new Array(SIZE);        for(let i=0;i<SIZE;i++)        {            binary_b[i]=0;        }        while (b > 0)        {            binary_b[j] = b%2;            b = Math.floor(b/2);            j++;        }           // Sort two binary representations        binary_a.sort(function(a,b){return a-b;});        binary_b.sort(function(a,b){return a-b;});           // Compare two sorted binary representations        for (i = 0; i < SIZE; i++)            if (binary_a[i] != binary_b[i])                return 0;           return 1;    }         // driver program    let a = 8, b = 4;    document.write(bit_anagram_check(a, b));         //This code is contributed by rag2127     </script>
Output:  
1
Note that the above code uses GCC-specific functions. If we wish to write code for other compilers, we may use Count set bits in an integer.Time Complexity: O (1) Auxiliary Space: O (1) No extra space is getting used.This article is contributed by Aditya Gupta. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
shrikanth13
Rajput-Ji
ukasp
rag2127
yogeshsakle8
anagram
Bit Magic
Bit Magic
anagram
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Little and Big Endian Mystery
Cyclic Redundancy Check and Modulo-2 Division
Binary representation of a given number
Program to find whether a given number is power of 2
Add two numbers without using arithmetic operators
Set, Clear and Toggle a given bit of a number in C
Bit Fields in C
Josephus problem | Set 1 (A O(n) Solution)
Find the element that appears once
Bits manipulation (Important tactics)