Open carloscn opened 1 year ago
一般方法就是,位运算,判断不相同的位的个数:
static size_t hamming_distance(size_t a, size_t b)
{
size_t i = 0;
size_t count = 0;
for (i = 0; i < sizeof(size_t) * 8; i ++) {
if (((a >> i) & 0x01u) != ((b >> i) & 0x01u)) {
count ++;
}
}
return count;
}
或者使用异或的方法,然后统计1的个数:
size_t utils_value_hamming_distance(size_t a, size_t b)
{
size_t i = 0;
size_t c = 0;
char str[sizeof(a) * 8 + 1] = {0};
c = a ^ b;
if (utils_size_t_to_str(c, str)) {
return 0;
}
return utils_str_count_char(str, '1');
}
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
示例 1: 输入:x = 1, y = 4 输出:2 解释:
上面的箭头指出了对应二进制位不同的位置。
示例 2: 输入:x = 3, y = 1 输出:1
提示: 0 <= x, y <= 231 - 1
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/hamming-distance