Hamming Distance
2017-01-04 09:42
337 查看
题目描述:
LeetCode 461. Hamming DistanceThe
Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Given two integers
xand
y, calculate the Hamming distance.
Note:
0 ≤
x,
y< 231.
Example:
Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ The above arrows point to positions where the corresponding bits are different.
解题思路:
1、先对x,y进行异或操作
2、将异或得到的结果每次向右移一位,与1按位与,如果结果为1,返回次数加1
JAVA CODE
public class Solution { public int hammingDistance(int x, int y) { int res = 0; int xor = x ^ y; for(int i= 0;i<32;i++){ res += (xor>>i) & 1; } return res; } }
PYTHON CODE
class Solution(object): def hammingDistance(self, x, y): """ :type x: int :type y: int :rtype: int """ return bin(x ^ y).count('1')
可以参考:http://www.cnblogs.com/grandyang/p/6201215.html
相关文章推荐
- PHP中的按位与和按位或操作示例
- 关于移位操作的一点重要说明
- 如何判断一个数是不是2的乘法
- 利用按位与(&)判断数字的奇偶性
- 说说&和&&的区别?
- 移位操作和乘法的比较
- java中的移位运算符:<<,>>,>>>总结
- &、&&和|、||的区别
- C语言位运算整理
- View.MeasureSpec
- View.MeasureSpec
- View.MeasureSpec
- 利用数学知识快速理解按位与& 按位或| 按位异或^ 按位取反~
- 一些有趣的算法
- LeetCode 29 - Divide Two Integers
- 关于移位的有意思的小问题
- 关于c语言中负数位移位操作的漫谈
- (c语言)求一个二进制数1的个数
- 按位与,按位或,按位异或,按位取反
- java将IP地址转换为数字以及逆向转换(位移和0xFF的使用)