[LeetCode] 461. Hamming Distance(位操作)

传送门

Description

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Given two integers x and y, calculate the Hamming distance.

Note:
0 ≤ x, y < 231.

Example:

1
2
3
4
5
6
7
8
9
10
11
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.

思路

题意:给定两个数,求出其汉明距离

题解:将两个数异或,那么二进制位上相同的都变成0,不同变成1,统计一下有多少个1即可

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution {
public:
    //6ms
    int hammingDistance(int x, int y) {
        int res = 0;
        while (x && y){
            if ((x & 1) != (y & 1)) res++;
            x >>= 1;
            y >>= 1;
        }
        while (x){
            if (x & 1)  res++;
            x >>= 1;
        }
        while (y){
            if (y & 1)  res++;
            y >>= 1;
        }
        return res;
    }
 
    //3ms
    int hammingDistance(int x,int y){
        x ^= y;
        y = 0;
        while (x){
            y += (x & 1);
            x >>= 1;
        }
        return y;
    }
};

  

 
posted @   zxzhang  阅读(159)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示

目录导航