关于javascript:算法-计算汉明距离

算法 – 计算汉明间隔

1. 题目

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

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

  • 输出: x = 1, y = 8
  • 输入: 2
  • 解释:

  • (0 0 0 1)
  • (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);
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理