LeetCode 二进制中1的个数题解

📅 2026/7/13 4:23:52 👁️ 阅读次数 📝 编程学习
LeetCode 二进制中1的个数题解

LeetCode 二进制中1的个数题解

题目描述

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数。

示例

输入:n = 00000000000000000000000000001011
输出:3

解题思路

方法:位运算

思路

  • 使用位运算来解决这个问题。
  • 将 n 与 1 进行与运算,检查最低位是否为 1。
  • 将 n 右移一位,继续检查。
  • 重复上述步骤,直到 n 为 0。

复杂度分析

  • 时间复杂度:O(k),其中 k 是整数的位数。
  • 空间复杂度:O(1)。

代码实现

方法:位运算

# 二进制中1的个数(位运算) def hamming_weight(n): count = 0 while n: count += n & 1 n >>= 1 return count # 测试 def test_hamming_weight(): n = 0b00000000000000000000000000001011 print(hamming_weight(n)) # 输出:3 if __name__ == "__main__": test_hamming_weight()

测试用例

测试用例 1:基本情况

输入:n = 00000000000000000000000000001011
输出:3

总结

二进制中1的个数是一个经典的位运算问题,它可以通过位运算来高效地解决。

位运算的核心思想是:将整数与 1 进行与运算,检查最低位是否为 1,然后将整数右移一位。

掌握位运算的使用方法,对于解决类似的问题非常重要。