problem link:https://leetcode.com/problems/hamming-distance/
code:
效率从高到低的三种方法
第一种方法,要知道java中int占用4个字节(char占用2个字节 reference:http://blog.csdn.net/witsmakemen/article/details/8974200),这种类型的题既然位操作就要使用位操作,所以第二种方法要比第一种方法效率低一点。第三种方法用的是java自带的方法。
public int hammingDistance(int x, int y) {
int z=x^y;
int bits=0;
for(int i=0;i<32;i++){
bits+=z&1;
z=z>>1;
}
return bits;
}
public int hammingDistance(int x, int y) {
int z=x^y;
int bits=0;
while(z!=0){
bits+=z%2;
z=z>>1;//比除以2效率要高很多
}
return bits;
}
public int hammingDistance(int x, int y) {
return Integer.bitCount(x ^ y);
}