這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
題目描述
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兩數進行異或運算,然後統計1的出現次數。
相關知識點
在本題目中,漢明距離的含義是兩個整數的不同二進位位的和。
異或運算子作用為“相同出0,不同出1”
Golang代碼
hammingDistance.go
package _461_HammingDistancefunc 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_HammingDistanceimport ( "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) }}