Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、问题描述
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 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题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:
什么是汉明距离,简单来讲就是将两个10进制数字转换成2进制数字之后,统计不同位置上面1的个数,那如何将这题逐渐向位运算靠拢呢?
不同位置,啥叫不同位置,不就是如果相同位置都是1,那么就不计数。只有当相同位置一个为1,另一个为0时才开始计数,这不就是位运算的与计算吗?
四、编码实现
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;//输出结果
}
};
复制代码
五、测试结果
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END