频道栏目
首页 > 考试 > 其他 > 正文

笔试题1. LeetCode OJ (1)

2017-01-11 11:13:00      个评论    来源:DaLaoZi的专栏  
收藏   我要投稿

题目意思是:求两个整数之间的汉明距离是对应位不同的位置的个数。

这里写图片描述
class Solution {
public:
    int hammingDistance(int x, int y) {
        if(x==y) return 0;
        int count=0;
        while(x || y){//排除x,y都是0的情况
            if((x&1)!=(y&1)) count++;
            x=x>>1;
            y=y>>1;
        }
        return count;
    }
};

x&1什么意思:

从命令的角度讲,是将x的每一bit(2进制中的1和0都占一个bit)与0001的每一bit做与运算.

“&”是”与运算”的意思,1&1=1,其他情况(1&0,0&1,0&0)都=0.

从逻辑的角度来讲,这个命令就是取x的最左边一位.例如x是0011,x&1得到0001,如果x是0110,x&1得到0000.

x=x>>1;

C语言程序中x>>=1,如果作用于整数x,就是把x右移一位,把x的二进制值的最后一位丢弃,最高位补0。

实际就是把x的值除以2。在运算结果上等价于x=x/2。

上一篇:[BZOJ2300][HAOI2011]防线修建(凸包+splay)
下一篇:【Leetcode】125. Valid Palindrome
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站