当前位置:网站首页>LeetCode #461 汉明距离

LeetCode #461 汉明距离

2022-07-06 09:13:00 三笠·阿卡曼

题目

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 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;
    }
}
原网站

版权声明
本文为[三笠·阿卡曼]所创,转载请带上原文链接,感谢
https://blog.csdn.net/cjl_xupt/article/details/119360786