【刷题笔记10.6】LeetCode:汉明距离

LeetCode:汉明距离

一、题目描述

两个整数之间的汉明距离是指这两个数字对应二进制位不同的位置的数目。

给你两个整数x 和 y,计算并返回他们之间的汉明距离。

二、分析及代码实现

对于汉明距离问题我们其实可以将其转换为:计算x 和 y按位异或后求结果中1 的位数

本题这里我们给出两种解题方法:

方法1:内置位计数功能

java 复制代码
class Solution {
    public int hammingDistance(int x, int y) {
        return Integer.bitCount(x ^ y);
    }
}

方法2:移位实现位计算

算法核心思想如下:

  • 1、首先计算出x 按位异或 y,记作s = x ^ y;并新建计数器result用于记录s的二进制表示中1的位数
  • 2、通过s 按位与 1 不断的检查 s的最低位,如果最低位为 1 ,那么令计数器加 1,然后我们令 s 的整体位右移 1 位,这样最低位就被舍弃,原本的次位变成了最低位。我们重复这个过程直到 s = 0 为止。这样计数器中就累计了 s 的二进制表示中1的数量。

上代码:

java 复制代码
public int hammingDistance(int x, int y) {
        int s = x ^ y;
        int result = 0;
        while (s != 0) {
            result += s & 1; //s按位与1(按位与&:如果两个相应的二进制都为1,则该位的结果为1,否则为0)
            s = s >> 1;  //s二进制整体右移1位
        }
        return result;
    }
相关推荐
暴风鱼划水2 分钟前
算法题(Python)哈希表 | 2.两个数组的交集
python·算法·哈希表
fufu03116 分钟前
Linux环境下的C语言编程(四十二)
linux·c语言·算法
HalvmånEver10 分钟前
Linux : 基础IO(三)
linux·运维·算法
oushaojun212 分钟前
linux中backtrace实战
linux·运维·算法·backtrace
埃伊蟹黄面29 分钟前
模拟算法思想
c++·算法·leetcode
im_AMBER30 分钟前
weather-app开发手记 02 JSON基础 | API 调用 400 错误修复 | JWT 认证问题
笔记·学习·json·axios·jwt
阿蒙Amon33 分钟前
JavaScript学习笔记:1.JavaScript简介
javascript·笔记·学习
副露のmagic35 分钟前
更弱智的算法学习day 10
python·学习·算法
逸风尊者44 分钟前
开发可掌握的知识:uber H3网格
后端·算法
半问1 小时前
付费投流硬控互联网
人工智能·算法·互联网·推荐·流量