difficult:easy #461

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.

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.
解法一

int hammingDistance(int x, int y) {
    int res = 0, exc = x ^ y;
    while (exc){
        ++res;
        exc &= (exc - 1);
    }
    return res;
}

解法二

//递归法
int hammingDistance(int x, int y) {
    if ((x ^ y) == 0) return 0;
    return (x ^ y) % 2 + hammingDistance(x / 2, y / 2);
}

解法三

int hammingDistance(int x, int y) {
    int result = x ^ y;
    int binary = 0;
    while (result) {
        binary += result % 2;
        result = result / 2;
    }
    return binary;
}

版权声明:原创,转载请注明来源,否则律师函警告



leetcode      leetcode

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!