1. 題目
2. 描述
兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。
給出兩個整數 x 和 y,計算它們之間的漢明距離。
注意:
0 ≤ x, y < 231.示例:
輸入: x = 1, y = 4
輸出: 2
解釋:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑上面的箭頭指出了對應二進制位不同的位置。
3. 思路
漢明距離其實就是最終兩個數進行異或運算後的數轉換爲二進制後其中爲 1
的個數,此時的主要操作是對字符串的遍歷,時間複雜度爲 .
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;
}