漢明距離
兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。
解題思路:先分別把x和y轉化爲二進制,然後二進制數組對應位置的元素的異或結果相加,得到的就是漢明距離。
但是看到其他人做的,太簡單了吧!
Integer中有一個方法bitCount(),用來統計整數對應的二進制數中1的個數。
對於本題的做法(一行代碼就完事)。不得不說,Java中有很多很神奇的函數,太6了。
public int hammingDistance(int x, int y) {
return Integer.bitCount(x^y);
}
我自己的思路,先把x和y轉化爲二進制,然後將兩個字符串補0至一樣長。最後把二進制數組對應位置的元素的異或結果相加,就可以得到漢明距離。代碼有點多。
public int hammingDistance(int x, int y) {
int s=0;
String a=Integer.toBinaryString(x);
String b=Integer.toBinaryString(y);
int al=a.length(),bl=b.length();
int len=al>bl?al:bl;
if (al>bl){
for (int i=0;i<al-bl;i++)
b="0"+b;
}else {
for (int i=0;i<bl-al;i++){
a="0"+a;
}
}
for (int i=0;i<len;i++){
s+=((a.charAt(i)-'0')^(b.charAt(i)-'0'));
}
return s;
}