问题:
难度:easy
说明:
给两个整形 a b,求整形的 位元 汉明距离,汉明距离是指两个等长字符串之间不同的字符个数,题目就要求写出32位int不同的位元个数。
问题链接:https://leetcode.com/problems/hamming-distance/
相关算法:
Edit Distance(编辑距离):https://blog.csdn.net/qq_28033719/article/details/106472232
Total Hamming Distance(所有int的汉明距离):https://blog.csdn.net/qq_28033719/article/details/107150716
输入案例:
Input: x = 1, y = 4
Output: 2
Explanation:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
The above arrows point to positions where the corresponding bits are different.
我的代码:
水题,汉明距离的话是比较字符串,那么整形的话也简单,固定32位,一个异或就知道多少不相同了。
class Solution {
public int hammingDistance(int x, int y) {
int d = x ^ y;
int count = 0;
while(d != 0) {
if((d & 1) != 0) count ++;
d >>= 1;
}
return count;
}
}