leetcode-461-漢明距離
阿新 • • 發佈:2020-07-14
目錄
- Posted by 微博@Yangsc_o
- 原創文章,版權宣告:自由轉載-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
本題是leetcode,地址:461. 漢明距離
題目
兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。
給出兩個整數 x 和 y,計算它們之間的漢明距離。
注意:
0 ≤ x, y < 231.示例:
輸入: x = 1, y = 4
輸出: 2
解釋:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑上面的箭頭指出了對應二進位制位不同的位置。
分析
對於二進位制串a和b來說,漢明距離等於aXORb中1的數目,例如0100→1001 (紅色)的漢明距離是 3; 0110→1110 (藍色)的漢明距離是 1;
code
public static int hammingDistance(Long v1, Long v2) { int dis = 0; int val = (int) (v1 ^ v2); while (val != 0) { dis ++; val &= val - 1; } return dis; } public static void main(String[] args) { Long v1 = 1L; Long v2 = 2L; int haming = hammingDistance(v1,v2); System.out.println(); }