題目描述
https://leetcode.com/problems/hamming-distance/description/
The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Given two integers x and y, calculate the Hamming distance.
Note:
0 ≤ x, y< 2^31.
Example:
Input: x = 1, y = 4
Output: 2
Explanation:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
The above arrows point to positions where the corresponding bits are different.
解題思路
此題考察的是知識點是異或運算符^,解題的思路就是將x,y兩數(shù)進行異或運算攒庵,然后統(tǒng)計1的出現(xiàn)次數(shù)薇正。
相關(guān)知識點
在本題目中雇寇,漢明距離的含義是兩個整數(shù)的不同二進制位的和。
異或運算符作用為“相同出0,不同出1”
Golang代碼
hammingDistance.go
package _461_HammingDistance
func HammingWeight(z int) (w int){
for z > 0 {
tmp := z % 2
if 1 == tmp {
w++
}
z = z /2
}
return w
}
func HammingDistance(x int, y int) int {
z := x ^ y
return HammingWeight(z)
}
測試代碼
hammingDistance_test.go
package _461_HammingDistance
import (
"testing"
)
func Test_HammingDistance(t *testing.T) {
ret := HammingDistance(1, 4)
if 2 != ret {
t.Errorf("test fail, want 2, get %+v\n", ret)
} else {
t.Logf("test pass, want 2, get %+v\n", ret)
}
}