Find the Complement of Base 10 Integer in Java
The challenge
Every non-negative integer N
has a binary representation. For example, 5
can be represented as "101"
in binary, 11
as "1011"
in binary, and so on. Note that except for N = 0
, there are no leading zeroes in any binary representation.
The complement of a binary representation is the number in binary you get when changing every 1
to a and
to a 1
. For example, the complement of "101"
in binary is "010"
in binary.
For a given number N
in base-10, return the complement of it’s binary representation as a base-10 integer.
Example 1:
Input: 5 Output: 2 Explanation: 5 is "101" in binary, with complement "010" in binary, which is 2 in base-10.
Example 2:
Input: 7 Output: 0 Explanation: 7 is "111" in binary, with complement "000" in binary, which is 0 in base-10.
Example 3:
Input: 10 Output: 5 Explanation: 10 is "1010" in binary, with complement "0101" in binary, which is 5 in base-10.
Note:
0 <= N < 10^9
The solution in Java code
To solve this, we need to know how to convert an int to binary and back again.
In order to convert an int to binary, we can use the Integer.toBinaryString()
helper.
When we want to convert a binary string back to an int, we can use the Integer.parseInt(str, 2)
helper.
In the below code solution, we solve the problem by:
- Converting the int to binary
- Creating a new int array of the same length, but with all zeroed values
- Look from right to left and swap the values
- Create a new string and loop through the array appending them
- Convert the resulting string binary back to an int
- Return our answer
|
|