Number Complement

Given a positive integer, output its complement number. 

The complement strategy is to flip the bits of its binary representation.
  • Note:
1. The given integer is guaranteed to fit within the range of a 32-bit signed integer.

2. You could assume no leading zero bit in the integer’s 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.
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.
  • Analysis:
Use ">>" and "&" operands to get each bit is 1 or 0.

Every time, do (input_num >> i) & 1.

If bit(i) is 0 zero, add (1 << i) to the result until input_number is zero
  • Code - Java:
class Solution {
    public int findComplement(int num) {
        int result = 0;
        int count = 0;
        while (num > 0) {
            if ((num & 1) == 0) {
                result += 1 << count;
            }
            num >>= 1;
            count++;
        }
        return result;
    }
}
  • Code - C++:
class Solution {
public:
    int findComplement(int num) {
        int count = 0;
        int result = 0;
        while (num > 0) {
            if ((num & 1) == 0) {
                result += 1 << count;
            }
            count++;
            num >>= 1;
        }
        return result;
    }
};
  • Code - Python:
class Solution(object):
    def findComplement(self, num):
        """
        :type num: int
        :rtype: int
        """
        result = 0
        count = 0
        while num > 0:
            if (num & 1) == 0:
                result += 1 << count
            num >>= 1
            count += 1
        return result
  • Code - C:
int findComplement(int num) {
    int count = 0;
    int result = 0;
    while (num > 0) {
        if ((num & 1) == 0) {
            result += 1 << count;
        }
        count++;
        num >>= 1;
    }
    return result;
}

results matching ""

    No results matching ""