【刷题笔记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;
    }
相关推荐
芒克芒克3 分钟前
LeetCode 面试经典 150 题:删除有序数组中的重复项(双指针思想解法详解)
算法
青 .4 分钟前
数据结构---二叉搜索树的实现
c语言·网络·数据结构·算法·链表
MChine慕青1 小时前
顺序表与单链表:核心原理与实战应用
linux·c语言·开发语言·数据结构·c++·算法·链表
摇滚侠1 小时前
Vue3入门到实战,最新版vue3+TypeScript前端开发教程,笔记03
javascript·笔记·typescript
塔中妖1 小时前
【华为OD】查找接口成功率最优时间段
算法·链表·华为od
塔中妖1 小时前
【华为OD】最大子矩阵和
算法·华为od·矩阵
努力学习的小廉2 小时前
深入了解linux系统—— 线程同步
linux·服务器·数据库·算法
数据爬坡ing2 小时前
从挑西瓜到树回归:用生活智慧理解机器学习算法
数据结构·深度学习·算法·决策树·机器学习
luoganttcc2 小时前
小鹏汽车 vla 算法最新进展和模型结构细节
人工智能·算法·汽车
岑梓铭2 小时前
考研408《计算机组成原理》复习笔记,第六章(1)——总线概念
笔记·考研·408·计算机组成原理·计组