力扣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 }

posted on 2022-07-09 09:23  我不想一直当菜鸟  阅读(44)  评论(0编辑  收藏  举报