두 개의 정수가 있다고 가정해 보겠습니다. 우리는 그것들의 해밍 거리를 찾아야 합니다. 해밍 거리는 두 숫자 사이의 비트 수가 다른 비트 수입니다. 따라서 숫자가 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