題目
兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。
給出兩個整數 x 和 y,計算它們之間的漢明距離。
注意:
0 ≤ x, y < 231.
示例:
輸入: x = 1, y = 4
輸出: 2
解釋:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭頭指出了對應二進制位不同的位置。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/hamming-distance
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
/**
漢明距離
個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。
給出兩個整數 x 和 y,計算它們之間的漢明距離。
注意:
0 ≤ x, y < 231.
*/
#include <stdio.h>
/**
思路一:總體是利用十進制轉換爲二進制的方法(除法+餘數)
思路二:將x和y取餘操作後的結過轉化爲二進制,查找1的個數
*/
int hammingDistance(int x, int y)
{
int num1[32] = {0};
int num2[32] = {0};
int distance = 0;
int temp,i=0;
while(x!=0)
{
num1[i++] = x%2;
x = x/2;
// printf("%d %d\n",num1[i],x);
}
i = 0;
while(y!=0)
{
num2[i++] = y%2;
y = y/2;
//printf("%d %d\n",num2[i],y);
}
for(i = 0; i< 32 ; ++i)
{
//printf("num1 = %d num2 = %d\n",num1[i],num2[i]);
if(num1[i]!= num2[i])
{
distance++;
}
}
return distance;
}
int main(void)
{
int a,b;
scanf("%d %d",&a,&b);
int result =hammingDistance(a,b);
printf("result == %d",result);
return 0;
}