前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode-461-汉明距离

LeetCode-461-汉明距离

作者头像
benym
发布2022-07-14 16:39:01
1740
发布2022-07-14 16:39:01
举报
文章被收录于专栏:后端知识体系后端知识体系

# LeetCode-461-汉明距离

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

给出两个整数 xy,计算它们之间的汉明距离。

注意: 0 ≤ x, y < 2^31.

示例1:

代码语言:javascript
复制
输入: x = 1, y = 4

输出: 2

解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

上面的箭头指出了对应二进制位不同的位置。

# 解题思路

方法1、异或+移位:

不难看出异或运算能够保留数据中不相同位置的1,之后我们只需要统计1的个数即可

在Java中内置函数Integer.bitCount(x^y)可以快速计算出1的个数

另外一种方式是将每个位逻辑位移,移动到最左侧,或者最右侧,检查该位是否为1

这里采用移动到最右侧的方式,即右移运算

使用取模%2运算或者AND运算&1,检查最右边的一位是否为1,这两个操作都会屏蔽最右位以外的其他位。

# Java代码

代码语言:javascript
复制
class Solution {
    public int hammingDistance(int x, int y) {
        int xOry = x^y;
        int distance = 0;
        while(xOry!=0){
            if((xOry%2)==1){ // 或者使用(xOry&1)也可以
                distance++;
            }
            xOry=xOry>>1;
        }
        return distance;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # LeetCode-461-汉明距离
    • # 解题思路
      • # Java代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档