Python 程式檢查兩個數字的二進位制表示是否是變位詞。
給出兩個數字。我們的任務是檢查它們是否是二進位制表示上的變位詞。我們可以使用 Counter(可迭代)方法和字典比較在 python 中快速解決此問題。
示例
Input: a = 8, b = 16 Output : Yes Binary representations of both numbers have same 0s and 1s.
演算法
Step 1 : Given two numbers. Step 2 : Convert both number into its binary using bin() function and remove first two characters because of bin(). Step 3 : Since binary representation of both numbers could differ in length so we will append zeroes in start of shorter string to make both string of equal length. Step 4 : 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. Binary representations into dictionary.
示例程式碼
# function to Check if binary representations # of two numbers are anagram from collections import Counter def anagramoftwonumber(p1,p2): # convert numbers into in binary # and remove first two characters of # output string because bin function #'0b' as prefix in output string bno1 = bin(p1)[2:] bno2 = bin(p2)[2:] # append zeros in shorter string zeros = abs(len(bno1)-len(bno2)) if (len(bno1)>len(bno2)): bno2 = zeros * '0' + bno2 else: bno1 = zeros * '0' + bno1 # convert binary representations # into dictionary dict1 = Counter(bno1) dict2 = Counter(bno2) # compare both dictionaries if dict1 == dict2: print(p1, p2 ,"are two anagram number") else: print(p1 , p2 ,"are not anagram number") # Driver program if __name__ == "__main__": n1 = int(input("Enter First number ::>")) n2 = int(input("Enter Second number ::>")) anagramoftwonumber(n1,n2)
輸出
Enter First number ::>8 Enter Second number ::>16 8 16 are two anagram number Enter First number ::>3 Enter Second number ::>2 3 2 are not anagram number
廣告