Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 해밍 거리


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