Leetcode 461. 汉明距离 位运算
地址 https://leetcode-cn.com/problems/hamming-distance/
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
示例 1:
输入:x = 1, y = 4
输出:2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
示例 2:
输入:x = 3, y = 1
输出:1
提示:
0 <= x, y <= 231 - 1
解答
位运算 二进制下逐位计算,查看两个数该位是否一个为1一个不为1,则记录进答案。
另外要考虑,x y二进制下位数不一致 比如一个是 1010 一个是1101010101;
那么有额外位数的数字带有1的位置均加入答案。
上述思路 例子1的分析就是 1和4
1
1 0 0
有两位,在二进制下一个为1 一个不为1
例子2的分析是 3 和1
1
1 1
有一位 在二进制下一个为1 一个不为1
代码如下
class Solution {
public:
int hammingDistance(int x, int y) {
int ans =0;
while(x!=0 && y!=0){
int a = x&1;
int b = y&1;
if(a!=b){ans++;}
x>>=1; y>>=1;
}
int left =0;
if(x==0){
left=y;
}else if(y==0){
left=x;
}
while(left!=0){
if(left&1){
ans++;
}
left>>=1;
}
return ans;
}
};
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~