对于以下简单函数来计算32位整数中的1的数量,对于输入-1,它应该返回32,但是得到12。
class Solution:
def bitNum(self, n):
bm = {
0:0, 1:1, 2:1, 3:2, 4:1, 5:2, 6:2, 7:3,
8:1, 9:2, 10:2, 11:3, 12:2, 13:3, 14:3,
15:4
}
return bm[n & 0xF] + bm[(n>>4) & 0xF] + bm[(n>>8) & 0xF]
+ bm[(n>>12) & 0xF] + bm[(n>>16) & 0xF] + bm[(n>>20) & 0xF]
+ bm[(n>>24) & 0xF] + bm[(n>>28) & 0xF]
但是如果使用var来存储结果,并且将split加上几个部分,则会返回正确的答案。为什么呢?
class Solution:
def bitNum(self, n):
bm = {
0:0, 1:1, 2:1, 3:2, 4:1, 5:2, 6:2, 7:3,
8:1, 9:2, 10:2, 11:3, 12:2, 13:3, 14:3,
15:4
}
bits = bm[n & 0xF]
bits += bm[(n>>4) & 0xF] + bm[(n>>8) & 0xF]
bits += bm[(n>>12) & 0xF] + bm[(n>>16) & 0xF] + bm[(n>>20) & 0xF]
bits += bm[(n>>24) & 0xF] + bm[(n>>28) & 0xF]
return bits
答案 0 :(得分:2)
可能将所有内容包围成'('和')'? :) 或者在行尾使用反斜杠:
return (a + b
+ c + d)