LeetCode 461. 汉明距离

Posted Blocking The Sky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 461. 汉明距离相关的知识,希望对你有一定的参考价值。

题目描述

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 x 和 y,计算它们之间的汉明距离。
注意:
0 ≤ x, y < 231.

示例:

输入: x = 1, y = 4

输出: 2

解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

上面的箭头指出了对应二进制位不同的位置。

代码

class Solution {
public:
    int hammingDistance(int x, int y) {
        int z;
        z=x^y;//先将两数相异或得将二进制位不同的地方置位1
        //cout<<z;
        int i;
        int sum=0;
       	for( i=0; i<32; i++ ){ //对z中的二进制位1的个数进行计数
		    if( (z&(1<<i)) == (1<<i) ){
			    sum++;
		    }
	    }
        /*
        i=1;//另外一种计数方法
        for(int j=0;j<31;j++){
            if((z&i)==i){
                sum++;
            }
            i=i<<1;
        }
        */
        return sum;
    }
};

以上是关于LeetCode 461. 汉明距离的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 461. 汉明距离

LeetCode--461--汉明距离

leetcode461 汉明距离

461-汉明距离

统计二进制中1的个数(LeetCode 461. 汉明距离 or LeetCode 191. 位1的个数)

LeetCode 461. Hamming Distance (汉明距离)