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