【面试题】两整数的汉明距离

polaris · · 2842 次点击
``` func hammingDistance(x int, y int) int { var d int for { if x == 0 && y == 0 { break } if x&1 != y&1 { d++ } x = x >> 1 y = y >> 1 } return d } ```
#1
更多评论
xiaonanln
https://github.com/xiaonanln/goworld
先对2个数字进行异或,获得的结果的二进制里1的个数就是所要求的距离。然后对这个结果每次减去其最低位的1直到0,这样的效率要高于一位位进行比较
#2
``` z := x ^ y return bits.OnesCount(uint(z)) ```
#3