今日题目(剑指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; } }