LeetCode 每日一題 461. 漢明距離

1. 題目

461. 漢明距離

2. 描述

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

給出兩個整數 x 和 y,計算它們之間的漢明距離。

注意:
0 ≤ x, y < 231.

示例:

輸入: x = 1, y = 4

輸出: 2

解釋:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑

上面的箭頭指出了對應二進制位不同的位置。

3. 思路

漢明距離其實就是最終兩個數進行異或運算後的數轉換爲二進制後其中爲 1 的個數,此時的主要操作是對字符串的遍歷,時間複雜度爲 O(n)O(n).

4. 實現

public int hammingDistance(int x, int y) {
    // 將兩個數進行異或運算
    int xor = x ^ y;

    // 計數即結果
    int count = 0;

    //然後將結果轉化爲二進制之後,其中爲 1 的個數
    String binaryStr = Integer.toBinaryString(xor);

    // 遍歷轉換成的二進制字符串,其中爲 1 的就是最終結果
    for (int i = 0; i < binaryStr.length(); i++) {
        if ('1' == binaryStr.charAt(i)) {
            count++;
        }
    }
    return count;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章