Skip to content
Related Articles

Related Articles

Python Dictionary | Check if binary representations of two numbers are anagram
  • Last Updated : 27 Jul, 2020
GeeksforGeeks - Summer Carnival Banner


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

We have existing solution for this problem please refer Check if binary representations of two numbers are anagram link. We can solve this problem quickly in python using Counter(iterable) method and Dictionary Comparison. Approach is simple,

  1. Convert both number into it’s binary using bin() function.
  2. Since binary representation of both numbers could differ in length so we will append zeros in start of shorter string to make both string of equal length. ie.; append zeros = abs(len(bin1)-len(bin2)).
  3. Convert both output string containing 0 and 1 returned by bin function into dictionary using Counter() function, having 0 and 1 keys and their count as value. Compare both dictionaries, if value of 0’s and 1’s in both dictionaries are equal then binary representations of two numbers are anagram otherwise not.




# function to Check if binary representations
# of two numbers are anagram
from collections import Counter
  
def checkAnagram(num1,num2):
  
    # convert numbers into in binary
    # and remove first two characters of 
    # output string because bin function 
    # '0b' as prefix in output string
    bin1 = bin(num1)[2:]
    bin2 = bin(num2)[2:]
  
    # append zeros in shorter string
    zeros = abs(len(bin1)-len(bin2))
    if (len(bin1)>len(bin2)):
         bin2 = zeros * '0' + bin2
    else:
         bin1 = zeros * '0' + bin1
  
    # convert binary representations 
    # into dictionary
    dict1 = Counter(bin1)
    dict2 = Counter(bin2)
  
    # compare both dictionaries
    if dict1 == dict2:
         print('Yes')
    else:
         print('No')
  
# Driver program
if __name__ == "__main__":
    num1 = 8
    num2 = 4
    checkAnagram(num1,num2)
     

Output:

Yes

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :