Leetcode题目461:汉明距离(位运算-简单)
题目描述:
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
注意:
0 ≤ x, y < 231.
示例: 输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
思路分析:
思路一:两个数从低位到高位,分别依次与1做与运算,如果当前位的与运算结果不同,结果+1
思路二:Integer 的bitCount方法
代码实现:
方法一:
class Solution { public static int hammingDistance(int x, int y) { int count = 0; while (x != 0 || y != 0) { if ((x & 1) != (y & 1)) { count++; } x = x >> 1; y = y >> 1; } return count; } }
方法二:
public static int hammingDistance(int x, int y) { return Integer.bitCount(x ^ y); }