位1的个数

56 阅读1分钟

思路一:

转换为二进制串,统计 1 出现的次数

func hammingWeight(n int) int {
	str := fmt.Sprintf("%32b", n)
	slice := []rune(str)
	count := 0
	for _, item := range slice {
		if item == '1' {
			count++
		}
	}
	return count
}

思路二:

位运算,逐位检查

func hammingWeight(n int) int {
	count := 0
	for n!=0 {
		if n&1==1 {
			count++
		}
		n>>=1
	}
	return count
}