第四单元的LeetCode题解

431.汉明距离

2018-04-11  本文已影响3人  第四单元

题目

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 xy,计算它们之间的汉明距离。

思路

先找出两个数字哪些位置的数字不同,再统计个数。
使用异或运算,10=01=1 00=11=0
那么z=x^y z的二进制表示中1的个数就是答案。
再用191题求‘’“位一的个数”就得到答案了。

代码

class Solution {
    private static int hammingWeight(int n) {
        int count = 0;
        int c = 1;

        for(int i = 0; i < 32; i++) {
            if((n & (c << i)) != 0)
                count++;
        }    

        return count;
    }

    public int hammingDistance(int x, int y) {
        int z = x ^ y;
        return hammingWeight(z);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读