leet461. 漢明距離

題目

兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。

給出兩個整數 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章