首页 > 代码库 > [解题报告]461. Hamming Distance
[解题报告]461. Hamming Distance
https://leetcode.com/problems/hamming-distance/
将两个二进制数比较,输出不同位数的个数
Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑
解题思路:
此题考察的是知识点是运算符,特别是异或运算符^
异或运算符作用为“相同出0,不同出1”,这个特性正好可以用来解题
那么正常的思路就是将x,y两数进行异或运算,然后统计1的出现次数
解法(Python):
1 class Solution(object): 2 def hammingDistance(self, x, y): 3 return bin(x^y).count("1");
这个解法其实很low的,首先用了bin()函数,作用是将异或结果二进制化为字符串,然后利用字符串函数count统计1出现的次数并输出
优秀解法评析(Java):
1 public int hammingDistance(int x, int y) { 2 int xor = x ^ y, count = 0; 3 for (int i=0;i<32;i++) count += (xor >> i) & 1; 4 return count; 5 }
由于题目有限制0 ≤ x
, y
< 231
所以这个解法将异或结果一个个移位,然后和1和运算,自然相同为1,不同为0,然后用count器加上这个相同的1自然就是“1出现的次数”
[解题报告]461. Hamming Distance
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。