【LeetCode】汉明距离的算法及运用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/anxixiaomu/article/details/62231096

1、什么是汉明距离
 汉明距离,从二进制方面来看,就是两个等长字符串的二进制对应 bit 不相同的位个数,例如

1011
1000 //汉明距离为2
1100
1010 //汉明距离是2

2.计算汉明距离的算法

 思路:

  01.将两个给定的数进行 异或(^)运算后保存在变量a,汉明距离就是a的二进制中1的个数

  02.当a不为0时,和0x01进行按位与(&)运算。如果结果为1,则统计变量加1

  03.将a右移一位,重复第02步

  代码:

 class Solution { 
  public:
     int hammingDistance(int x, int y) {
        int cnt = 0;
        x=x^y;
        while(x!=0)
        {
            if(x&0x01)
              cnt++;
        x=x>>1;
     }
       return cnt;         
    }
 };

 这里写图片描述 

如若用Python来写,^在Python中是指“按位异或运算符”:当两对应的二进位相异时,结果为1

猜你喜欢

转载自blog.csdn.net/anxixiaomu/article/details/62231096
今日推荐