Brian Kernighan 算法

该算法可以被描述为这样一个结论:记 f(x) 表示 x 和 x-1 进行与运算所得的结果(即 f(x)=x & (x?1)),那么f(x) 恰为 x 删去其二进制表示中最右侧的 1 的结果。

Brian Kernighan 算法

 

 

 

leetcode 461.汉明距离

Brian Kernighan 算法

 

 

 

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

 

leetcode 201.数字范围按位与

Brian Kernighan 算法

 

 

 

var rangeBitwiseAnd = function(m, n) {
    while (m < n) {
        // 抹去最右边的 1
        n = n & (n - 1);
    }
    return n;
};

 

leetcode 231.2的幂

Brian Kernighan 算法

 

 

var isPowerOfTwo = function(n) {
    return n > 0 && (n&(n-1)) == 0;
};

Brian Kernighan 算法

上一篇:搭建Struts框架


下一篇:0.9.0.RELEASE版本的spring cloud alibaba nacos实例