বিবেচনা করুন আমাদের দুটি পূর্ণসংখ্যা আছে। আমাদের তাদের হ্যামিং দূরত্ব খুঁজে বের করতে হবে। হ্যামিং দূরত্ব হল দুটি সংখ্যার মধ্যে বিট ভিন্ন বিট গণনার সংখ্যা। তাই যদি সংখ্যা 7 এবং 15 হয়, তারা বাইনারিতে 0111 এবং 1111 হয়, এখানে MSb ভিন্ন, তাই হ্যামিং দূরত্ব হল 1।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- এর জন্য i =31 নিচে 0
- b1 =x এর ডান স্থানান্তর (i AND 1 বার)
- b2 =y এর ডান স্থানান্তর (i AND 1 বার)
- যদি b1 =b2, তাহলে উত্তর:=উত্তর + 0, অন্যথায় উত্তর:=উত্তর + 1
- উত্তর ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
class Solution(object): def hammingDistance(self, x, y): """ :type x: int :type y: int :rtype: int """ ans = 0 for i in range(31,-1,-1): b1= x>>i&1 b2 = y>>i&1 ans+= not(b1==b2) #if not(b1==b2): # print(b1,b2,i) return ans ob1 = Solution() print(ob1.hammingDistance(7, 15))
ইনপুট
7 15
আউটপুট
1