兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。
注意:0 ≤
x
,y
< 2^31.示例:輸入: x = 1, y = 4
輸出:
2解釋:
1 (000
1)4 (010
0)↑ ↑
上面的箭頭指出了對應二進位制位不同的位置。
1.x,y最大2^31,如何把這麼大的數字拆成二進位制呢?
考慮一下任意乙個數字p,對於 0 ≥ p ≤ 2^31 ,轉換成二進位制後的二進位制位數一定是不大於31位的(思考一下2^31這個數用二進位制怎麼表示),因此可以用長度為(31+1)的陣列來表示這個數字p。
2.如何按位遍歷乙個整數p呢?
//偽**for (int i = 0; i < 32; ++i)
//說明
按位左移動 1<0
i=1; 1010 & 0010 = 0010
i=2; 1010 & 0100 = 0000
i=3; 1010 & 1000 = 1000
... //之後到高位都是0
}
1.
classsolution
return
res;
}};1. exc = x ^ y :先異或得到新的一組二進位制數q,對於q中的每一位q
q=1:對應二進位制位不同
q=0:對應二進位制位相同
2. res += (exc >> i) & 1;
exc每次按位右移一位:相當於依次把每一位的數放在最低位上
(exc>>1) & 1 :相當於刪掉其他位而只保留最低位的數
總結:達到按位遍歷的效果
2.python解法
return bin(x ^ y).count('1')
參考:
461 漢明距離
define ll long long class solution return ans 補一張真值表 另外學到了乙個 x x 1 的妙用 x 1會使得x的最右邊的1變為0 x x 1 假如x只有乙個1,那麼結果就是0了 class solution return y python的實現一樣的 但...
461 漢明距離
題目描述 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意 0 x,y 231.示例 輸入 x 1,y 4 輸出 2 解釋 1 0 0 0 1 4 0 1 0 0 上面的箭頭指出了對應二進位制位不同的位置。方法1 主要思路 ...
461 漢明距離
461.漢明距離 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數x和y,計算它們之間的漢明距離。注意 0 x,y 231.示例 輸入 x 1,y 4輸出 2解釋 1 0 0 0 1 4 0 1 0 0 上面的箭頭指出了對應二進位制位不同的位置。第一版 就是直接求整...