Here, we will help to understand about how to solve Binary Number with Alternating Bits solution of leet code 693 with code and algorithm.
You are given a positive integer. You have to check whether it has alternating bits or not. It means two adjacent bits will always have different values.
Example:
1) Input: n = 10 Output: true Explanation: The binary representation of 10 is: 1010 Here, adjacent bits are difference i.e 1 then 0 then 1 then 0 (1 -> 0 -> 1 -> 0) 2) Input: n = 7 Output: false Explanation: The binary representation of 7 is: 111 Here, adjacent bits are not difference i.e 1 then again 1 then again 1 (1 -> 1 -> 1 -> 1) 3) Input: n = 15 Output: false Explanation: The binary representation of 15 is: 1111 Here, adjacent bits are not difference i.e 1 then again 1 then again 1 then again 1(1 -> 1 -> 1 -> 1 -> 1) 4) Input: n = 21 Output: true Explanation: The binary representation of 21 is: 10101
Algorithm 1:
- Get the first bit of number
- Do right shift of number by 1
- Iterate over bits of number
- If the current bit is not equal to previous bit
- Update the previous bit to current bit
- Continue with loop
- If the current bit is equal to previous bit
- Both bits are equal , return false then
- If the current bit is not equal to previous bit
- return true (all the bits are alternating bits)
Binary Number with Alternating Bits code in C++
Code 1:
#include <iostream>
using namespace std;
bool hasAlternatingBits(int n) {
// Get the first bit
int prev_bit = n & 1;
n >>= 1;
while(n) {
// Compare prev_bit with current bit.
if(prev_bit == (n & 1)) {
// If both are equal then return false
return false;
}
prev_bit = n & 1;
n >>= 1;
}
return true;
}
int main()
{
cout<<hasAlternatingBits(10);
return 0;
}Code 2:
#include <iostream>
using namespace std;
bool hasAlternatingBits(int n) {
int l = n % 2;
n >>= 1;
while (n > 0)
{
int current = n % 2;
if (l == current)
return (false);
l = current;
n >>= 1;
}
return true;
}
int main()
{
cout<<hasAlternatingBits(10);
return 0;
}Code 3:
#include <iostream>
using namespace std;
bool hasAlternatingBits(int n) {
int store=2;
while(n) {
if((n%2)==store)
return 0;
else
store=n%2;
n/=2;
}
return 1;
}
int main()
{
cout<<hasAlternatingBits(10);
return 0;
}Output:
Input: 10 in bit's: 1010 Output: 1 i.e (true)
To check more leetcode problem’s solution. Pls click given below link:
https://techieindoor.com/category/leetcode/