461、漢明距離

3107 ワード

2つの整数間のハミング距離は、この2つの数字がバイナリビットの異なる位置に対応する数を指す.2つの整数xとyを与え,それらの間のハミング距離を計算した.
注意:0≦x,y<231.
例:
入力:x=1、y=4
出力:2
1(0 0 0 0 1)4(0 1 0 0)↑↑
上の矢印は、対応するバイナリビットの異なる位置を示しています.
class Solution1 {
public:
	int hammingDistance(int x, int y) { //    
		return bitset<32>(x^y).count();
	}
};

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

リンク:https://leetcode-cn.com/problems/hamming-distance