为了能到远方,脚下的每一步都不能少.|

505donkey

园龄:6年3个月粉丝:7关注:0

2024-12-26 00:30阅读: 4评论: 0推荐: 0

leetcode-191 位1的个数

给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中
设置位的个数(也被称为汉明重量)。

示例 1:

输入:n = 11
输出:3
解释:输入的二进制串 1011 中,共有 3 个设置位。

示例 2:

输入:n = 128
输出:1
解释:输入的二进制串 10000000 中,共有 1 个设置位。

示例 3:

输入:n = 2147483645
输出:30
解释:输入的二进制串 1111111111111111111111111111101 中,共有 30 个设置位。

提示:

  • 1 <= n <= 231 - 1

go实现1:

func hammingWeight(n int) int {

	// 使用标准库方法,直接将给定整数n,转为二进制表示的字符串,赋值给变量bin
	bin := fmt.Sprintf("%b", n)

	// 定义位1计数器,初始值为0
	count := 0

	// 对转为结果进行遍历,如果当前位为字符1(因为bin为字符串),则计数器加1
	for i := 0; i < len(bin); i++ {
		if bin[i] == '1' {
			count++
		}
	}

	// 返回计数器结果
	return count

}

go实现2:

func hammingWeight(n int) int {

	// 初始化计数器,用于计算位1个数
	count := 0

	// 当给定n不为0时,对n进行位与运算
	for n != 0 {
		// 与运算从n末位开始(即最右边),然后所有位数往右进1位,并左补零
		count += n & 1
		n >>= 1
	}

	// 返回计数结果
	return count
}

本文作者:505donkey

本文链接:https://www.cnblogs.com/505donkey/p/18625336

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   505donkey  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起