力扣461(java)-汉明距离(简单)
题目:
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
示例 1:
输入:x = 1, y = 4
输出:2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
示例 2:
输入:x = 3, y = 1
输出:1
提示:
0 <= x, y <= 231 - 1
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/hamming-distance
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
循环遍历二进制数,每次对两个数进行移位,然后进行异或运算,不同就加1。
& :按位与, 两个都是1结果就为1,否则结果为0;
^ :按位异或,只要两个二进制位相同就为0,不同为1。
代码:
1 class Solution { 2 public int hammingDistance(int x, int y) { 3 int res = 0; 4 for(int i = 0; i < 32; i++){ 5 int a = (x >> i) & 1; 6 int b = (y >> i) & 1; 7 res += a ^ b; 8 } 9 return res; 10 } 11 }