【Day31】461.汉明距离

461. 汉明距离

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

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

注意:

  • 0 ≤ x, y < 231.

示例:

输入: x = 1, y = 4

输出: 2

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

上面的箭头指出了对应二进制位不同的位置。

题解:

可以考虑为求异或结果值当中1的个数,进一步转换为求二进制中1的个数。

class Solution {
public:
    int lowbit(int x) {
        return x & (-x);
    }
    int hammingDistance(int x, int y) {
        int ret = x ^ y;
        int ans = 0;
        while (ret) {
            ret -= lowbit(ret);
            ans++;
        }
        return ans;
    }
};

   转载规则


《【Day31】461.汉明距离》 Tyzhao 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
【Day32】477.汉明距离总和 【Day32】477.汉明距离总和
477. 汉明距离总和两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。 计算一个数组中,任意两个数之间汉明距离的总和。 示例: 输入: 4, 14, 2 输出: 6 解释: 在二进制表示中,4表示为0100,14表示为
2021-05-28
下一篇 
【Day30】1190.反转每对括号间的子串 【Day30】1190.反转每对括号间的子串
1190. 反转每对括号间的子串给出一个字符串 s(仅含有小写英文字母和括号)。 请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。 注意,您的结果中 不应 包含任何括号。 示例 1: 输入:s = "
2021-05-26
  目录