Leetcode461汉明距离

深碍√TFBOYSˉ_ 2021-12-23 23:17 347阅读 0赞

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 x 和 y,计算它们之间的汉明距离。

注意:
0 ≤ x, y < 231.

示例:

输入: x = 1, y = 4

输出: 2

解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑

汉明距离,就是指2个数的二进制数之间1的不同的个数。这个通过异或可以得到。

汉明重量,就可以得到二进制中1的个数。即通过n = n&(n-1).这个可以记下来,以后碰到类似求二进制1的个数直接用。

  1. class Solution {
  2. public:
  3. int hammingDistance(int x, int y) {
  4. int a = x;
  5. int b = y;
  6. int res = 0;
  7. int c = a ^ b;
  8. while(c!=0){
  9. res++;
  10. c = c&(c-1);
  11. }
  12. return res;
  13. }
  14. };

发表评论

表情:
评论列表 (有 0 条评论,347人围观)

还没有评论,来说两句吧...

相关阅读

    相关 LeetCode 461. 距离

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 注意: 0 ≤ x, y < 231. 利用

    相关 461. 距离

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 注意: 0 ≤ x, y < 231. 示例