首先附上题目链接: https://leetcode-cn.com/problems/hamming-distance/

一:题目

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。

注意:0 ≤ x, y < 231.

示例:

输入: x = 1, y = 4

输出: 2

解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑

上面的箭头指出了对应二进制位不同的位置。

  简单说明:这里就是要我们求两个数对应的二进制,有多少个位置的1是单独的,这里的单独意思是指两个数在某个位置是(0,1)形式存在,那这个1就是单独的。

         需要注意的是它给的x,y的范围,所以我们的变量只需要int就行了。

二:方法(c++)

  1:方法一:直接移位,每次取两个的最后一位进行判断

    这种二进制的题目,首先想到的就是能不能移位和亦或,或,与等操作。这里将每个数的最后一位比较,若是一个为0,一个为1则计数。

   int count=;
while(x!=||y!=)
{
if((x&)!=(y&))
{
count++;
}
x>>=;
y>>=;
}
return count ;

  2:方法二:汉明重量加汉明距离

    这里首先需要介绍这两个概念。汉明重量:某个数二进制中1的数量。  汉明距离:二进制位不同的位置的数目(就如题目所说,对应1的位置不同的数目)。

    汉明重量:n=n&(n-1)

      这里以6为例子:0110

      第一次;0110&0101=0100   :将最后一个1去掉了

      第二次:0100&0011=000    :将最后一位去掉了

    汉明距离:本质为两个数异或后字符"1"的个数,可以直接使用异或实现。

    所以这里我们首先异或算出哪些地方不同位置1。然后使用汉明重量,一次次统计异或得出的二进制里面1的个数。

int hammingDistance(int x, int y) {
//汉明距离加重量
int sum=x^y;// 异或来判断哪些不相同的,待会就是把不相同的一个个判别出来
int count=;
while(sum!=)
{
sum=sum&sum-;//依次去掉一
count++;
}
return count;
}

461. 汉明距离(Hamming Distance)leetcode的更多相关文章

  1. [Swift]LeetCode461. 汉明距离 | Hamming Distance

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

  2. 【LeetCode】汉明距离(Hamming Distance)

    这道题是LeetCode里的第461道题. 题目描述: 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ x,  ...

  3. 【leetcode 461】. Hamming Distance

    要求: 给定两个整数x和y,0 ≤ x, y < 231. 求x和y的汉明距离. Example: Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 ...

  4. Leetcode#461. Hamming Distance(汉明距离)

    题目描述 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ x, y < 231. 示例: 输入: x = ...

  5. [LeetCode] 461. Hamming Distance 汉明距离

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

  6. LeetCode 461. Hamming Distance (汉明距离)

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

  7. [LeetCode] Total Hamming Distance 全部汉明距离

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

  8. [LeetCode] Hamming Distance 汉明距离

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

  9. 【leetcode】461. Hamming Distance

    problem 461. Hamming Distance solution1: 根据题意,所求汉明距离指的是两个数字的二进制对应位不同的个数.对应位异或操作为1的累积和. class Solutio ...

  10. [Leetcode/Javascript] 461.Hamming Distance

    [Leetcode/Javascript] 461.Hamming Distance 题目 The Hamming distance between two integers is the numbe ...

随机推荐

  1. Oracle之:Function :func_float()

    create or replace function func_float(i_value float) return number is v_index number := 0; v_str var ...

  2. 如何获取到一个form中的所有子控件?

    使用yield关键字,非常的方便 private static IEnumerable<Control> GetChildren(Control frmRootDock) { if (fr ...

  3. koa2+redis+jwt token验证,简单注册登录

    首先新建文件夹命名koa-server,npm init,相关包的安装就不说了,这是我的package.json 新建index.js文件,编码如下,config全局配置不用管,redis是一个简单的 ...

  4. flask框架(四):通过局域网访问网站

    一:开启局域网访问 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) # 设置成局域网访问 二:设置windows的入站规则 ...

  5. jeecg中自定义dialog,实现窗体的弹出

    自定一个dialog,在子窗体中写一个方法,然后通过iframe进行调取function createwindowoktext(title, addurl,width,height,oktext,ca ...

  6. sh_18_字符串文本对齐

    sh_18_字符串文本对齐 # 假设:以下内容是从网络上抓取的 # 要求:顺序并且居中对齐输出以下内容 poem = ["\t\n登鹳雀楼", "王之涣", & ...

  7. php " ",0,'0',false ==判断

    今天项目中遇到的一个问题,举个栗子: if($_GET['is_has_idcard']==0 || $_GET['is_has_idcard']==1){ echo '这次我要上传身份证'; } i ...

  8. Vue_(组件通讯)动态组件

    动态组件 传送门 在一个元素上挂载多个组件,根据不同状态进行切换的时候,可以使用动态组件 动态组件的使用:需要使用内置组件<component></component>,根据 ...

  9. HDU 5791 Two ——(LCS变形)

    感觉就是最长公共子序列的一个变形(虽然我也没做过LCS啦= =). 转移方程见代码吧.这里有一个要说的地方,如果a[i] == a[j]的时候,为什么不需要像不等于的时候那样减去一个dp[i-1][j ...

  10. 微信公众号实现无限制推送模板消息!可向指定openID群发

    微信认证的服务号才有推送模板消息接口所以本文需要在认证服务号的情况下学习 以上就是模板消息,只有文字和跳转链接,没有封面图.在服务号的后台添加功能插件-模板消息即可. 模板消息,都是在后台选择一个群发 ...