Leetcode 461.Hamming Distance

来源:互联网 发布:怎么测试网络延迟 编辑:程序博客网 时间:2024/05/16 17:41

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: Input: x = 1, y = 4Output: 2Explanation:  1   (0 0 0 1)  4   (0 1 0 0)         ↑   ↑  The above arrows point to positions where the corresponding bits aredifferent.

Solution:

/*题目的意思是 输入两个int型变量x,y 编写函数返回x,y二进制位中有多少位不同。我的做法是 借用一个中间变量 1、10、100、1000、10000...... 就是十进制的  1、2、4.....  用这个中间变量分别和x、y与运算,如果结果相同那么说明x、y对  应位相同,否则不同。  */int hammingDistance(int x, int y) {    int midNum = 1,rnt = 0;;    int maxNum = x > y?x:y;    while (midNum <= maxNum) {        if ((midNum & x) != (midNum & y))            rnt++;        midNum <<= 1;        if (!midNum) break; //之前没有这行,会溢出,导致死循环。    }    return rnt;}//在讨论区里面,我发现了其他写法,也陈列如下:int hammingDistance(int x, int y) {  int cmpNum = x ^ y;    int rnt = 0;    while (cmpNum) {        rnt += cmpNum % 2;        cmpNum /= 2;        }    return rnt;}int hammingDistance(int x,int y) {    int temp = x ^ y;    if (!temp) return 0;    return temp % 2 + hammingDistance(x / 2,y / 2);}
原创粉丝点击