LeetCode #461 汉明距离

Posted 三笠·阿卡曼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode #461 汉明距离相关的知识,希望对你有一定的参考价值。

题目

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。

示例

最佳代码

package com.vleus.algorithm.bit_operator;

/**
 * @author vleus
 * @date 2021年08月03日 22:35
 */
public class HammingDistance {

    //方法一:异或:调库统计1的个数
    public int hammingDistance(int x, int y) {
        return Integer.bitCount(x ^ y);
    }

    //方法二:自定义实现统计1的个数,逐位右移
    public int hammingDistance2(int x, int y) {
        int xor = x ^ y; //得到异或结果
        int count = 0; //保存当前1的个数

        //逐位右移,直到结果为0
        while (xor != 0) {
            //如果最后一位为1,count++
            if ((xor & 1) == 1) {
                count++;
            }
            xor >>=1; //右移1位
        }

        return count;
    }

    public int hammingDistance3(int x, int y) {

        int xor = x ^ y; //得到异或结果
        int count = 0; //保存当前1的个数

        //快速位移,每次寻找当前最右面的一个1,直接消去
        while (xor != 0) {
            xor = xor & xor - 1;
            count++;
        }

        return count;
    }
}

以上是关于LeetCode #461 汉明距离的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 461. 汉明距离

LeetCode--461--汉明距离

leetcode461 汉明距离

461-汉明距离

统计二进制中1的个数(LeetCode 461. 汉明距离 or LeetCode 191. 位1的个数)

LeetCode 461. Hamming Distance (汉明距离)