Coi chúng ta có hai số nguyên. Chúng ta phải tìm khoảng cách Hamming của chúng. Khoảng cách hamming là số bit đếm được khác nhau giữa hai số. Vì vậy, nếu các số là 7 và 15, chúng là 0111 và 1111 trong hệ nhị phân, ở đây MSb là khác, do đó khoảng cách Hamming là 1.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Đối với i =31 giảm xuống 0
- b1 =dịch chuyển sang phải của x (i VÀ 1 lần)
- b2 =dịch chuyển sang phải của y (i VÀ 1 lần)
- nếu b1 =b2, thì trả lời:=answer + 0, nếu không thì trả lời:=answer + 1
- trả lời câu trả lời
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn -
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))
Đầu vào
7 15
Đầu ra
1