0
32ビット整数の1の数を計算する単純な関数の場合、入力-1では32を返しますが、代わりに12を返します。-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 plusを複数の部分にすると、正解が返されます。どうして?
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
おかげでポール!はい、それは動作します。私は最後に "\"がない場合、Pythonは戻り後に行を無視すると思います –