LeetCode-Hamming_Distance

題目:

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 < 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.


翻譯:

兩個數字之間的漢明距離是對應位置數字不同的個數。

給定兩個數字 x  y,計算漢明距離。

注意:

0 ≤ xy < 231.

例子:

輸入: x = 1, y = 4

輸出: 2

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

上面箭頭指向的即爲對應位不同的位置。


思路:

首先將給定數字 x 和 y 進行異或,這樣不同位的個數即爲異或後 1 的個數,然後對於得到的結果按位和 1 進行相與操作,以此來判斷不同位(即含 1 )的個數。


C++代碼(Visual Studio 2017):

#include "stdafx.h"
#include <iostream>
using namespace std;

class Solution {
public:
	int hammingDistance(int x, int y) {
		int result=0;
		int r = x^y;
		while(r){
			if (r & 1 == 1) {
				result++;
			}
			r >>= 1;
		}
		return result;
	}
};

int main()
{
	Solution s;
	int x = 1;
	int y = 4;
	int result;
	result = s.hammingDistance(x, y);
	cout << result;
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章