漢明距離
題目
兩個(gè)整數(shù)之間的漢明距離指的是這兩個(gè)數(shù)字對(duì)應(yīng)二進(jìn)制位不同的位置的數(shù)目。
給出兩個(gè)整數(shù) x 和 y,計(jì)算它們之間的漢明距離。
注意:
0 ≤ x, y < 231.
示例:
輸入: x = 1, y = 4
輸出: 2
解釋:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭頭指出了對(duì)應(yīng)二進(jìn)制位不同的位置。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/hamming-distance
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
思路
本身題目有問題.正確的解釋是兩個(gè)字符串不相同,通過改變n個(gè)位置能相同,這個(gè)數(shù)目叫做漢明距離.
就本題而言要找到漢明距離其實(shí)就是找到兩個(gè)整數(shù)在二進(jìn)制上的不同,所以先進(jìn)行異或運(yùn)算,剩下的1就是不同的位置,此時(shí)計(jì)算1的個(gè)數(shù)即可.
代碼
class Solution {
public int hammingDistance(int x, int y) {
int temp = x ^ y;
int sum = 0;
for(int i = 0;i < 32;i++){
if((1&(temp>>i)) == 1){
sum++;
}
}
return sum;
}
}