461. Hamming Distance【数学|位运算】

2017/3/14 15:23:55


The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Given two integers x and y, calculate the Hamming distance.

 

题目要求:求两个数字二进制位中同一位置不同bit的个数。

解法1  Java    利用1的移位依次匹配是否对应位为1,统计为1的个数。

 

1
2
3
4
5
6
7
8
9
public class Solution {
    public int hammingDistance(int x, int y) {
        x ^= y;
        int count = 0;
        for ( int i=0;i<32;i++ )
            count = (1<<i & x ) !=0 ? count+1 : count;
        return count;
    }
}
 

解法2 Java   利用 a &= a-1 依次去掉最后一个1,统计循环次数。

1
2
3
4
5
6
7
8
9
10
11
public class Solution {
    public int hammingDistance(int x, int y) {
        x ^= y;
        int count = 0;
        while( x != 0  ){
            x &= x - 1;
            count++;
        }
        return count;
    }
}

  

 
posted @   会飞的胖子  阅读(151)  评论(0编辑  收藏  举报
努力加载评论中...
编辑推荐:
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
阅读排行:
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· 一个适用于 .NET 的开源整洁架构项目模板
· .NET Core:架构、特性和优势详解
点击右上角即可分享
微信分享提示