算法 - 计算汉明距离

算法 - 计算汉明距离

1. 题目

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

汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。
示例:

  • 输入: x = 1, y = 8
  • 输出: 2
  • 解释:
1   (0 0 0 1)
8   (1 0 0 0)
     ↑     ↑

上面的箭头指出了对应二进制位不同的位置。

2. 代码

2.1. C#

public class Solution {
    public int HammingDistance(int x, int y) {
        var n = x ^ y;

        // 计算1的个数
        var counter = 0;
        while(n>0){
            n = n & (n-1);
            counter ++;
        }
        return counter;
    }
}

2.2. Javascript

var hammingDistance = function(x, y) {
    let n = x^y;
    let counter = 0;
    while(n){
        counter ++;
        n = n & (n-1);
    }
    return counter;
};

3. 另:计算二进制数字中1的个数

一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0。
因此,一个整数的二进制有多少个1,就可以进行多少次这样的操作。

    let counter = 0;
    while(n){
        counter ++;
        n = n & (n-1);
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 先来了解一下汉明距离 在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就...
    sixkery阅读 2,981评论 0 1
  • 709.转换成小写字母 题目描述:实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字...
    Zy_0818阅读 1,358评论 0 1
  • 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数x和y,计算它们之间的汉明距离。注...
    SunSeaSky阅读 1,495评论 0 0
  • 题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/hamm...
    二进制的二哈阅读 1,924评论 0 0
  • 两个等长字符串之间的汉明距离[https://zh.wikipedia.org/wiki/%E6%B1%89%E6...
    lio_zero阅读 6,091评论 0 7