[LeetCode]476. Number Complement
2017-05-03 本文已影响31人
Eazow
题目
Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
Note:
- The given integer is guaranteed to fit within the range of a 32-bit signed integer.
- You could assume no leading zero bit in the integer’s binary representation.
Example 1:
Input: 5
Output: 2
Explanation: The binary representation of 5 is 101 (no leading zero bits),
and its complement is 010. So you need to output 2.
Example 2:
Input: 1
Output: 0
Explanation: The binary representation of 1 is 1 (no leading zero bits),
and its complement is 0. So you need to output 0.
难度
Easy
方法
从低位到高位,取出num
的每一位求反,保存至result
的相同位中
python代码
class Solution(object):
def findComplement(self, num):
"""
:type num: int
:rtype: int
"""
i = 1
result = 0
while i <= num:
result |= (i & num) ^ i
i <<= 1
return result
assert Solution().findComplement(5) == 2
assert Solution().findComplement(1) == 0