【leetcode每日一题】汉明距离
汉明距离
1、题目描述
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
2、算法描述
核心描述:
1、首先明确题目要计算的是二进制位不同的位置的数目
2、然后把两个数进行异或之后得到一个新的数,这个新的数的二进制代表里面的1的个数就代表个不同位置的个数
3、因此只需要返回异或后的数的二进制1的个数
具体实现:
1、首先异或两个数得到一个十进制的数
2、然后通过循环,假设则个数是n,然后再定义一个计数器,的只要判断如果n%2==1那么我们就可以让计数器+1。
3、最后返回计数器的值
3、代码实现
package com.java;
/**
* @author huangchao
* @date 2021/5/27 0027
*/
public class Day49_Solution {
public int hammingDistance(int x, int y) {
int n = x^y;
int count = 0;
while (n!=0) {
if (n%2 == 1) {
count++;
}
n=n/2;
}
return count;
}
}