美文网首页算法相关
【LeetCode】461. 汉明距离

【LeetCode】461. 汉明距离

作者: 秀叶寒冬 | 来源:发表于2019-08-23 22:33 被阅读0次

    题目描述

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

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

    注意:
    0 ≤ x, y < 2^31.

    示例

    输入: x = 1, y = 4

    输出: 2

    解释:
    1 (0 0 0 1)
    4 (0 1 0 0)
    ↑ ↑

    解答

    • 自己解答
    public int hammingDistance(int x, int y) {
            int a[] = new int[32];
            int sum = 0;
            for(int i=0;i<a.length;i++){
                a[i] = 0;
            }
            int i = 0;
            while(x>0){
                a[i++] = x%2;
                x/=2;
            }
            i = 0;
            while(y>0){
                a[i]= a[i]+1;
                i++;
                y/=2;
            }
            for(i=0;i<a.length;i++){
                if(a[i]==1){
                    sum++;
                }
            }
            return sum;
        }
    
    • 其它答案
        public int hammingDistance(int x, int y) {
            int ans = 0;
            while(x != 0 || y != 0){
                if((x & 1) != (y & 1))
                    ans++;
                x>>=1;
                y>>=1;
            }
            return ans;
        }
    

    相关文章

      网友评论

        本文标题:【LeetCode】461. 汉明距离

        本文链接:https://www.haomeiwen.com/subject/ecmxectx.html