首先附上题目链接: 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. NTP服务及时间同步

    环境: centos7 server   192.168.2.171 client    192.168.2.173.192.168.2.174 整体思路:173.174同步171的时间,171定时同 ...

  2. C语言常用库函数

    一.数学函数 调用数学函数时,要求在源文件中包下以下命令行: #include <math.h> 函数原型说明 功能 返回值 说明 int abs( int x) 求整数x的绝对值 计算结 ...

  3. VMware中linux虚拟机无法全屏显示的解决方法(1080P分辨率调节)

    安装了linux(这里以Ubuntu为例)后,发现无法全屏,如下图 即使在设置里面也找不到适合我的显示器的分辨率(我的显示器为1080P) 网上很多人都说是因为没装显卡驱动,其实不是这样的.要解决这个 ...

  4. 用Python调用Shell命令

    Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如下几种方式: 第一种 ...

  5. JQUERY动态绘制表格,实现动态添加一行,删除一行

    HTML部分 <table style="width: 100%;" id="TABYESTERDAY11"></table> < ...

  6. 题解 【POJ1014】 Dividing

    题目意思 有六种不同的石子,权值为\(1\)~\(6\),给出六种石子的数量,求能否将石子分成权值相等的两份. 解析 这题可以直接用多重背包写, 因为仔细想想, 能够平均分成两份, 也就是能将一部分石 ...

  7. spark写数据入kafka示范代码

    一.pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  8. MessagePack Java Jackson 在不关闭输出流(output stream)的情况下序列化多变量

    com.fasterxml.jackson.databind.ObjectMapper 在默认的情况下在写出输入后将会关闭输出流(output stream). 如果你希望序列化多值变量在同一个输出流 ...

  9. ZOJ - 3591 NIM

    ZOJ - 3591NIM 题目大意:给你n,s,w和代码,能生成长度为n的序列,问异或和不为0的子序列有多少个? 这是个挂羊头卖狗肉的题,和NIM博弈的关系就是要异或和不为0,一开始以博弈甚至循环节 ...

  10. 包管理神器-pipenv

    一:前言 介绍一个包管理神器-pipenv,这个工具可以让我们在写代码.创建Python运行环境.package依赖关系以及项目合作的时候更有效率. 在pycon2018上,Kenneth Reitz ...