leetcode-461:汉明距离

简介: leetcode-461:汉明距离

题目

题目连接

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

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

示例 1:

输入:x = 1, y = 4
输出:2
解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑
上面的箭头指出了对应二进制位不同的位置。

示例 2:

输入:x = 3, y = 1
输出:1

解题

参考链接

方法一:移位实现位计数

x与y异或,那么统计该结果中位1的个数即可。

class Solution {
public:
    int hammingDistance(int x, int y) {
        int m=x^y;
        int res=0;
        while(m){
            res+=(m&1);
            m>>=1;
        }
        return res;
    }
};

方法二:内置位1计数

class Solution {
public:
    int hammingDistance(int x, int y) {
        return __builtin_popcount(x^y);
    }
};

方法三:Brian Kernighan 算法

class Solution {
public:
    int hammingDistance(int x, int y) {
        int m=x^y;
        int res=0;
        while(m){
            res++;
            m&=m-1;
        }
        return res;
    }
};
相关文章
【Leetcode -461.汉明距离 -482.密钥格式化】
【Leetcode -461.汉明距离 -482.密钥格式化】
50 0
|
4月前
|
Python
【Leetcode刷题Python】461. 汉明距离
提供了LeetCode题目461的Python编程解决方案,题目要求计算两个整数之间的汉明距离,即它们二进制表示中不同位数的个数。
25 0
【Leetcode刷题Python】461. 汉明距离
|
算法 Java
算法打卡Day25_leetcode _461. 汉明距离
算法打卡Day25_leetcode _461. 汉明距离
算法打卡Day25_leetcode _461. 汉明距离
LeetCode 461. 汉明距离
LeetCode 461. 汉明距离
100 0
|
算法 Java
《LeetCode刷题》—461.汉明距离
《LeetCode刷题》—461.汉明距离
114 0
《LeetCode刷题》—461.汉明距离
|
算法 Python
<LeetCode天梯>Day047 汉明距离(位运算+内置函数) | 初级算法 | Python
<LeetCode天梯>Day047 汉明距离(位运算+内置函数) | 初级算法 | Python
<LeetCode天梯>Day047 汉明距离(位运算+内置函数) | 初级算法 | Python
|
算法 Java
【leetcode刷题】15.汉明距离——Java版
哈喽,大家好,我是一条。 糊涂算法,难得糊涂
133 0
【leetcode刷题】15.汉明距离——Java版
|
算法
​LeetCode刷题实战477:汉明距离总和
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
136 0
|
算法
​LeetCode刷题实战461:汉明距离
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
102 0
LeetCode 训练场:461. 汉明距离
LeetCode 训练场:461. 汉明距离
109 0