0
点赞
收藏
分享

微信扫一扫

【LeetCode每日一题】剑指 Offer 15. 二进制中1的个数(持续更新)


不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~

2021/6/1

今日题目(剑指Offer系列)

​​剑指 Offer 15. 二进制中1的个数​​

请实现一个函数,输入一个整数(以二进制串形式),
输出该数二进制表示中 1 的个数。
例如,把 9 表示成二进制是 1001,有 2 位是 1。
因此,如果输入 9,则该函数输出 2。

示例:

示例 1:
输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。

示例 2:
输入:00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。

示例 3:
输入:11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

解题思路:

>本题目是要计数二进制中1的个数
>可以采用移位与运算
>如果一个数与1进行与运算=1的话
>说明该数的末位为1

Python解法:

class Solution:
def hammingWeight(self, n: int) -> int:
count=0

while n!=0:
count+=n&1
n>>=1

return count

Java解法:

public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int res = 0;
while(n != 0) {
res += n & 1;
n >>>= 1;
}
return res;
}
}


举报

相关推荐

0 条评论