您的位置:首页 > 其它

LeetCode - 461. Hamming Distance

2016-03-07 11:18 483 查看

Description

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Given two integers
x
and
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.


Solution

除了最容易想到的暴力法,还可以用n与n-1按位与的方法

python版:

class Solution(object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
xor = x ^ y
count = 0
while (xor != 0):
xor = xor & (xor - 1)
count = count + 1

return count

cpp版:

class Solution {
public:
int hammingDistance(int x, int y)
{
int xor_diff = x ^ y;
int count = 0;
while (xor_diff != 0)
{
count++;
xor_diff = xor_diff & (xor_diff-1);
}
return count;
}
};

Reference:

http://www.cnblogs.com/grandyang/p/6201215.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: