美文网首页
汉明距离

汉明距离

作者: 习惯了_就好 | 来源:发表于2019-05-21 09:51 被阅读0次

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 xy,计算它们之间的汉明距离。

注意:
0 ≤ x, y < 231.

示例:

<pre>输入: x = 1, y = 4

输出: 2

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

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

//将两个数字转成二进制,用0把字符串补到长度相等,再去比较两个串
class Solution {
    public int hammingDistance(int x, int y) {
        String xStr = intToBinary(x);
        String yStr = intToBinary(y);
        int xLength = xStr.length();
        int yLength = yStr.length();
        int length = xLength - yLength;
        if(length < 0){
            for(int i = 0;i <-length;i++){
                xStr = "0" + xStr;
            }
        }else if(length > 0){
            for(int i = 0;i <length;i++){
                yStr = "0" + yStr;
            }
        }
        
        int distance = 0;
        for(int i = 0;i < xStr.length(); i++){
               if(xStr.charAt(i) != yStr.charAt(i)){
                   distance++;
               }
         }
        return distance;
    }
    
    private String  intToBinary(int num){
        String result = "";
        while(num != 0){
            result = (num % 2) + result;
            num = num / 2;
        }
        return result;
    }
}
//先将两个数字异或求值,然后转成二进制,统计里面1的个数
class Solution {
    public int hammingDistance(int x, int y) {
       
        int distance = 0;
        int num = x^y;
        
        String numStr = intToBinary(num);
        
        for(int i = 0;i< numStr.length();i++){
            if(49 == numStr.charAt(i)){
                distance++;
            }
        }
        return distance;
    }
     private String  intToBinary(int num){
        String result = "";
        while(num != 0){
            result = (num % 2) + result;
            num = num / 2;
        }
        return result;
    }
}

相关文章

  • 汉明距离、超立方体、异或的一些知识

    汉明距离和汉明重量 汉明距离是以理查德·卫斯里·汉明的名字命名的。在信息论中,两个等长字符串之间的汉明距离是两个字...

  • LeetCode 461.汉明距离

    ?博客原文 :《LeetCode 461.汉明距离 - JavaScript》 汉明距离定义:两个整数之间的汉明距...

  • 汉明距离

  • 汉明距离

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

  • 汉明距离

    指的是两个(相同长度)字符串,你变成我,我变成你,需要换掉多少个字符的总和,即Max(Sum1,Sum2),比如...

  • 汉明距离

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/hamm...

  • 汉明距离

    https://zhuanlan.zhihu.com/p/94081111pHash简单来说,是通过感知哈希算法对...

  • 汉明距离

    题目: 题目的理解: 将整数转化为二进制,然后再转化为字符串,进行字符串比较,得到不同的位数。 python实现 ...

  • 汉明距离

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

  • 汉明距离

    汉明距离是求等长的字段串之间的距离,换句话说,就是通过异或求出1的数量. 举例说明 复习一下异或的求解方式,异或是...

网友评论

      本文标题:汉明距离

      本文链接:https://www.haomeiwen.com/subject/yqhdzqtx.html