第一题 位1的间隔

题目

解题思路

对于二进制数的操作
位运算无疑是最高效的
最间接的思路是
间接用与运算读取1的个数
循环32次后返回计数器的值

代码

func hammingWeight(num uint32) int {    var count int    k := 32    for i := 0; i < k; i++ {        a := num & 1        count += int(a)        num = num >> 1    }    return count}

复杂度剖析及优化

第二题 汉明间隔

题目

解题思路

能够发现
在将x与y进行异或之后
咱们把一个简单的问题转换成为了已解决的问题

代码

func hammingDistance(x int, y int) int {    return hammingWeight(uint32(x)^uint32(y))}func hammingWeight(num uint32) int {    var count int    k := 32    for i := 0; i < k; i++ {        a := num & 1        count += int(a)        num = num >> 1    }    return count}

优化