476. Number Complement
Difficulty: Easy
Topics: Bit Manipulation
The complement of an integer is the integer you get when you flip all the 0
's to 1
's and all the 1
's to 0
's in its binary representation.
- For example, The integer
5
is"101"
in binary and its complement is"010"
which is the integer2
.
Given an integer num
, return its complement.
Example 1:
- Input: num = 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: num = 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.
Constraints:
1 <= num < 231
Note: This question is the same as 1009. Complement of Base 10 Integer
Solution:
We need to flip the bits of the binary representation of a given integer and return the resulting integer.
Steps to solve the problem:
- Convert the number to its binary representation.
-
Flip the bits (i.e., change
0
to1
and1
to0
). - Convert the flipped binary string back to an integer.
Let's implement this solution in PHP: 476. Number Complement
<?php
// Example usage:
$num = 5;
echo findComplement($num); // Output: 2
$num = 1;
echo findComplement($num); // Output: 0
?>
Explanation:
-
decbin($num)
: Converts the given integer to its binary string representation. -
Flipping the bits: We iterate through the binary string and flip each bit by checking if it's a
1
or a0
. -
bindec($flipped)
: Converts the flipped binary string back to an integer.
Example Runs:
-
Input:
5
- Binary representation:
"101"
- Flipped binary:
"010"
- Output:
2
- Binary representation:
-
Input:
1
- Binary representation:
"1"
- Flipped binary:
"0"
- Output:
0
- Binary representation:
This solution efficiently calculates the complement by flipping the bits of the binary representation of the given number.
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me: