码迷,mamicode.com
首页 > 编程语言 > 详细

LeetCode 461. Hamming Distance (C++)

时间:2019-04-14 16:06:22      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:pre   blank   wiki   异或   AMM   div   code   ++   tween   

题目:

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 ≤ xy < 2^31.

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&1 = 1,1&0 = 0,可以分别将x,y和1做与运算得到x,y的最后一位的值,再做异或运算,然后再将x,y右移一位。因为题里限定了x,y大小,所以只32次循环就够了。

程序:

class Solution {
public:
    int hammingDistance(int x, int y) {
        int nums = 0;
        for (int i = 0; i < 32; i++){
            if ((x & 1) ^ (y & 1))
                nums++;
            x = x >> 1;
            y = y >> 1;
        }
        return nums;
    }
};

LeetCode 461. Hamming Distance (C++)

标签:pre   blank   wiki   异或   AMM   div   code   ++   tween   

原文地址:https://www.cnblogs.com/silentteller/p/10705303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!