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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP