LeetCode 461. 漢明距離 位運算

LeetCode 461. 漢明距離 位運算

題目

兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。

給出兩個整數 x 和 y,計算它們之間的漢明距離。

注意:
0 ≤ x, y < 231.

示例:

輸入: x = 1, y = 4

輸出: 2

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

上面的箭頭指出了對應二進制位不同的位置。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/hamming-distance
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

思路

逐位比較末尾的01是否相同,如果一個數字已經被除盡,則剩下的位只有1時不同,因爲內存裏面默認是0

代碼

public int hammingDistance(int x, int y) {
		int a = 0;
		int b = 0;
		int count = 0;
		while (x != 0 && y != 0) {
			a = x % 2;
			x >>= 1;
			b = y % 2;
			y >>= 1;

			if (a != b)
				count++;
		}
		while (x != 0) {
			a = x % 2;
			if (a == 1)
				count++;
			x >>= 1;
		}
		while (y != 0) {
			b = y % 2;
			if (b == 1)
				count++;
			y >>= 1;
		}
		return count;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章