不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油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;
}
}