LeetCode Python 476. 数字の補数
1015 ワード
正の整数を指定し、その補数を出力します.補数はその数のバイナリ表現に対して逆をとる.
注意:によって与えられた整数は、32ビット符号付き整数の範囲内で保証される. バイナリ数にプリアンブルゼロビットが含まれていないと仮定できます.
例1:
例2:
より速い解法を見てみましょう.
上のbin(num)は文字列タイプに戻り、2進数で0 bの2つの要素が増えた.例えばnum=5 bin(num)が返す文字列は、「0 b 101」である.
注意:
例1:
: 5
: 2
: 5 101( ), 010。 2。
例2:
: 1
: 0
: 1 1( ), 0。 0。
class Solution(object):
def findComplement(self, num):
"""
:type num: int
:rtype: int
"""
i = 1
while num >= i:
num ^= i
i <<= 1
return num
より速い解法を見てみましょう.
class Solution(object):
def findComplement(self, num):
"""
:type num: int
:rtype: int
"""
return 2**(len(bin(num))-2)-1-num
上のbin(num)は文字列タイプに戻り、2進数で0 bの2つの要素が増えた.例えばnum=5 bin(num)が返す文字列は、「0 b 101」である.