算法 - 計算漢明距離


算法 - 計算漢明距離

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);
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM