【发布时间】:2022-11-10 12:53:24
【问题描述】:
Input: n = 00000000000000000000000000001011
Output: 3
Explanation: The input binary string 00000000000000000000000000001011 has a total of three '1' bits.
当我在下面运行我的代码时,似乎只有两个 1 被识别......为什么会这样?
class Solution(object):
def hammingWeight(self, n):
"""
:type n: int
:rtype: int
"""
sum = 0
for i in str(n):
sum += int(i)
return sum
我想我在这里误解了一些概念。希望得到一些指导。
【问题讨论】:
-
如果您将
print(n)和print(str(n))添加到您的代码中,您会看到什么?这是否为您提供了有关您的解决方案有什么问题的线索?提示:print()和str()使用什么基础来转换 int 以进行显示? -
二进制数
0b1011是基数为 10 的11。整数n是11。如果你取以10为底的整数11,把它变成一个字符串,数1,有两个1。 -
@PineNuts0 有几种方法可以做到这一点,最简单的可能是使用
bin将 base-10 整数转换为 base-2 表示,并计算结果字符串中的 1。 -
@PaulM。不,看起来像 LeetCode,它有 Python 3.10。
-
@KellyBundy 我不清楚,你以为我是什么意思?