leetcode-461. Hamming Distance

461. Hamming Distance

求两个数之间的汉明距离,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。这里将书转化为二进制然后比较相同位置不同的数有几个。

java代码:

public class Solution {
    public int hammingDistance(int x, int y) {
        int sum=0;
        while(x!=0||y!=0){
            if(x%2!=y%2)sum++;
            x/=2;
            y/=2;
        }
        return sum;
    }
}

第二种方法,x,y两个数可以先做xor(异或)运算,然后统计结果中有多少个一,刚好java代码中有个专门统计二进制数里面有多少个一的函数,那就是Ingeter.bitCount();

java代码:

public class Solution {
    public int hammingDistance(int x, int y) {
        return Integer.bitCount(x ^ y);
    }
}

  

posted @ 2017-03-21 19:41  世人谓我恋长安  阅读(137)  评论(0编辑  收藏  举报