python、Scala 实现汉明距离

时光总嘲笑我的痴心妄想 提交于 2020-01-11 03:07:22

 1.什么是汉明距离?

两个整数对应二进制位不同位置的数目。例如0001与1010之间对应二进制位不同位置数目是3;0001与0101之间对应二进制位不同位置数目是1.

def hammingDistance(self, x: int, y: int) -> int:
        bx = bin(x).replace("0b", "")
        by = bin(y).replace("0b", "")
        lx = len(bx)
        ly = len(by)
        lenth = 0
        ix, iy = 0, 0
        i, j, n = 0, 0, 0
        if lx < ly:
            lenth = ly
            while ix < (ly-lx):
                bx = "0" + bx
                ix += 1
        else:
            lenth = lx
            while iy < (lx-ly):
                by = "0" + by
                iy += 1
        while i<lenth and j<lenth:
            if bx[i] == by[j]:
                i+=1
                j+=1
            else:
                n = n+1
                i += 1
                j += 1
        return n

Scala实现汉明距离(主要考察逻辑运算) 

object Solution {
    def hammingDistance(x: Int, y: Int): Int = {
        var v:Int = x^y
        var n = 0
        while(v != 0){
            v = v & (v-1)
            n = n+1
        
        }
        return n
    }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!