python、Scala 實現漢明距離

 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
    }
}

 

發佈了12 篇原創文章 · 獲贊 10 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章