Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
Example: 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.
class Solution: def findComplement(self, num: int) -> int: length = len(bin(num)) - 2 return 2 ** length - num -1
some other methods in discussions: using bitwise shift
class Solution(object): def findComplement(self, num): i = 1 while i <= num: i = i << 1 return (i - 1) ^ num # the core is ^, 111 ^ 101 = 010
C++ method with bitwise operators