Skip to content

E3827.统计单比特整数

bit manipulation, https://leetcode.cn/problems/count-monobit-integers/

给你一个整数 n

如果一个整数的二进制表示中所有位都相同,则称其为 单比特数Monobit)。

返回范围[0, n](包括两端)内 单比特数 的个数。

示例 1:

输入: n = 1

输出: 2

解释:

  • 范围[0, 1]内的整数对应的二进制表示为"0""1"
  • 每个表示都由相同的位组成,因此答案是2。

示例 2:

输入: n = 4

输出: 3

解释:

  • 范围[0, 4]内的整数对应的二进制表示为"0""1""10""11""100"
  • 只有013满足单比特条件。因此答案是3。

提示:

  • 0 <= n <= 1000
python
class Solution:
    def countMonobit(self, n: int) -> int:
        count = 0
        for i in range(n+1):
            if (1 << i.bit_length()) - 1 == i:
                count += 1
        
        return count