मान लीजिए हमारे पास दो संख्याएं x और y हैं, हमें जांचना है कि x और y के बाइनरी प्रतिनिधित्व एक-दूसरे के एनाग्राम हैं या नहीं।
उदाहरण के लिए, यदि x = 9, y = 12 है, तो आउटपुट True होगा क्योंकि 9 का बाइनरी 1001 है और 12 का बाइनरी 1100 है, ये दोनों एक-दूसरे के एनाग्राम हैं (दोनों में दो 1 और दो 0 हैं)।
हल करने का तरीका
- यदि x और y में सेट बिट्स (1s) की संख्या समान है, तो True लौटाएं
- अन्यथा False लौटाएं
चूंकि बाइनरी में केवल 0 और 1 होते हैं, सेट बिट्स की संख्या समान होने का अर्थ है दोनों में 0 और 1 की संख्या समान है, यानी वे एनाग्राम हैं।
उदाहरण
def set_bit_count(num):
cnt = 0
while num:
cnt += num & 1
num >>= 1
return cnt
def solve(x, y):
if set_bit_count(x) == set_bit_count(y):
return True
return False
x = 9
y = 12
print(solve(x, y))
इनपुट
9, 12
आउटपुट
True