专栏 | 九章算法
网址 | www.jiuzhang.com
题目描述
两个整数之间的汉明距离是指,相应二进制位不同的位置的数目。
给你两个整数x和y,计算他们之间的汉明距离。
其中,0 ≤ x, y < 2^31.
样例
输入:
x = 1, y = 4
输出:
2
样例解释
x = 1 ==> 0 0 0 1
y = 4 ==> 0 1 0 0
—————-↑—-↑
两个数位的二进制不同,所以答案为2.
解题思路
a.题目没有要求空间复杂度,我们可以开两个大小为31的数组,将每个数都转换成二进制的形式,然后进行逐位比较并计算答案。
b.如果仔细思考可以发现,逐位比较两个数其实不需要开数组存放他们的二进制的形式,在一个循环内对两个数同时逐位比较即可,时间复杂度为O( log( max( x, y) ) )。下面给出这种解法的参考程序。
c.如果读者了解位运算的知识,而且面试官要求优化代码运行速度,那么参考代码中的模运算和除法运算均可以用位运算替代。
d.如果读者知道按位异或的性质(相同为0,不同为1),那么就可以想到如果将x和y进行异或操作,那么我们最后只需利用位运算统计异或结果中 “1” 的个数即可。
参考程序

面试官角度分析
这是一道简单难度的题,主要考察进制转换和语法的能力。这道题如果可以不开数组计算出结果或者利用异或的性质计算出结果,那么可以有hire的水平。如果运用位运算优化了代码,那么还可以有strong hire的评价。
题目答案链接
相关题目
www.lintcode.com/zh-cn/probl…
www.lintcode.com/zh-cn/probl…
推荐阅读
- 12 个 tips 教你搞定 onsite!
- 25 个 questions, 教你向面试官提问!
- 10 个 tips 教你搞定电面!
- 北美IT企业fulltime薪资大曝光
- IT 简历模板大放送 | 《如何写好技术简历》讲座精华总结
- 面试遇到做过的题怎么办?
- 冷冻期大揭秘 | Google、FB、Amazon、Linkedin冷冻期
- 面试前如何了解一家IT企业?试试官方技术博客!
- Google晋升机制 | 大公司如何升级打怪, 获得晋升?
欢迎关注我的微信公众号:九章算法(ninechapter)。
精英程序员交流社区,定期发布面试题、面试技巧、求职信息等
