LeetCode题解:number-of-1-bits

在云南出差的时候我开始刷LeetCode上的

算法题了,一共一百八十多道题,不知道

我得做到什么时候。好了闲话不多说,先

来对我做出的第一道题写个报告:

题目链接:

点击打开链接number-of-1-bits。

题目描述:

Write a function that takes an unsigned integer

and return the number of '1' bits it has (also known

as the Hamming weight).For example ,the 32-bit

integer '11' has binary representation 

00000000 00000000 00000000 00001011,

so the function should return 3.

题目解释:

将一个无符号整型(十进制)用二进制表示的时候,

每一个位上要么是0要么是1,现在就要计数有多少

位是1.这就是该函数的功能。

解题方案:

看到题目的描述以后,我们可以很直观的想到将一个

整数转换为二进制的,然后计数里面‘1’的个数就行了。


(注:此图片摘自百度百科

采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;

再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余

数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

上面的描述就是十进制转二进制的具体方法,我们在

计算过程中只要加一行计数余数为‘1’的个数的代码就

可以了。

下面就是我的源码:


int hammingWeight(uint32_t n) {
    	
    int count = 0;//用来计数余数‘1’的个数
	
        //进制转换
	while(n) 
	{
		if(n % 2) 
		{
			count++;
		}
		n /= 2;
	}
	return count;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值