1. 題目
給出兩個整數 x 和 y,計算它們之間的漢明距離。
漢明距離
是使用在數據傳輸差錯控制編碼里面的,漢明距離是一個概念,它表示兩個(相同長度)字對應位不同的數量,我們以d(x,y)表示兩個字x,y之間的漢明距離。對兩個字符串進行異或運算,並統計結果為1的個數,那么這個數就是漢明距離。
示例:
- 輸入: x = 1, y = 8
- 輸出: 2
- 解釋:
1 (0 0 0 1)
8 (1 0 0 0)
↑ ↑
上面的箭頭指出了對應二進制位不同的位置。
2. 代碼
2.1. C#
public class Solution {
public int HammingDistance(int x, int y) {
var n = x ^ y;
// 計算1的個數
var counter = 0;
while(n>0){
n = n & (n-1);
counter ++;
}
return counter;
}
}
2.2. Javascript
var hammingDistance = function(x, y) {
let n = x^y;
let counter = 0;
while(n){
counter ++;
n = n & (n-1);
}
return counter;
};
3. 另:計算二進制數字中1的個數
一個整數減去1,再和原整數做與運算,會把該整數最右邊一個1變成0。
因此,一個整數的二進制有多少個1,就可以進行多少次這樣的操作。
let counter = 0;
while(n){
counter ++;
n = n & (n-1);
}