zoukankan      html  css  js  c++  java
  • 【简单算法】45. 汉明距离

    题目:

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
    
    给出两个整数 x 和 y,计算它们之间的汉明距离。
    
    注意:
    0 ≤ x, y < 231.
    
    示例:
    
    输入: x = 1, y = 4
    
    输出: 2
    
    解释:
    1   (0 0 0 1)
    4   (0 1 0 0)
           ↑   ↑
    
    上面的箭头指出了对应二进制位不同的位置。

    解题思路:

    1.移位操作,每次移动一位。比较两个整数的最后一位是否相等,得出结果。

    class Solution {
    public:
        int hammingDistance(int x, int y) {
            int res = 0;
            for(int i = 0;i < 32; ++i){
                if((x^y)&1){
                    res++;
                }
                x = x>>1;
                y = y>>1;
            }
            
            return res;
        }
    };

    2.转换为第44题,求数字中1个数;

    val = x^y;

    求出VAL中1的个数即可。

    代码如下:

    class Solution {
    public:
        int hammingDistance(int x, int y) {
            int ret = 0;
            int n = x^y;
            
            while(n!=0){
               ret++;
               n = n&(n-1);
            }
            
            return ret;
        }
    };
  • 相关阅读:
    spring 事务
    spring jdbc学习1
    css学习2
    css学习1
    spring aop 学习1
    spring学习1
    jQuery学习笔记1
    JavaScript学习笔记1
    springboot+quartz+vue+socket实现的定时任务加任务日志实时查看
    hadoop hbase数据备份异常
  • 原文地址:https://www.cnblogs.com/mikemeng/p/9000259.html
Copyright © 2011-2022 走看看