461 Hamming Distance

来源:互联网 发布:知乎 拉丁美洲 编辑:程序博客网 时间:2024/06/08 12:14

一、题目简述

汉明距离为两个整数之间不同比特数的位数。给定两个整数x,y,计算汉明距。
0x,y231

二、编程思路

比较不同两个整数x,y比特数不同的位数,一种思路可以对其依次右移,比较其最低位是否相同,使用累加器计算相同的位数。
也可以先将x,y进行异或得到z,则z二进制串中1的个数即是所求汉明距。从而将问题转化为求二进制数中1的个数。

三、代码实现

使用第二种方法,实现如下:

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

四、心得体会

使用位操作可以提高程序速率。

0 0
原创粉丝点击