注册

算法题每日一练:汉明距离

一、问题描述


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


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


题目链接:汉明距离


二、题目要求


样例 1


输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。

样例 2


输入: x = 3, y = 1
输出: 1

考察


1.位运算简单题型
2.建议用时5~20min

三、问题分析


本题是位运算的第3题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:


算法题每日一练---第45天:位运算


什么是汉明距离,简单来讲就是将两个10进制数字转换成2进制数字之后,统计不同位置上面1的个数,那如何将这题逐渐向位运算靠拢呢?


不同位置,啥叫不同位置,不就是如果相同位置都是1或0,那么就不计数。只有当相同位置一个为1,另一个为0时才开始计数,这不就是位运算的异或计算吗?


7.png


四、编码实现


class Solution {
public:
int hammingDistance(int x, int y) {
int i,ans=0;//初始化数据
for(i=0;i<32;i++)//32位循环判断
{
if((x^y)&1<<i)//与计算并且开始查询1的个数
{
ans++;//计数器++
}
}
return ans;//输出结果
}
};

五、测试结果


1.png


2.png


作者:知心宝贝
链接:https://juejin.cn/post/7072515878218104840
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 个评论

要回复文章请先登录注册