Java

/**

 Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.

 Example 1:
 Input: 5
 Output: True
 Explanation:
 The binary representation of 5 is: 101

 Example 2:
 Input: 7
 Output: False
 Explanation:
 The binary representation of 7 is: 111.

 Example 3:
 Input: 11
 Output: False
 Explanation:
 The binary representation of 11 is: 1011.

 Example 4:
 Input: 10
 Output: True
 Explanation:
 The binary representation of 10 is: 1010.

 */
public class Binary_Number_with_Alternating_Bits {

    public static void main (String[] args) {
        Binary_Number_with_Alternating_Bits out = new Binary_Number_with_Alternating_Bits();
        Solution s = out.new Solution();

        System.out.println(s.hasAlternatingBits(3)); // 11
        System.out.println(s.hasAlternatingBits(4)); // 100
        System.out.println(s.hasAlternatingBits(5)); // 101
    }

    class Solution {
        public boolean hasAlternatingBits(int n) {

            if (n <= 0) {
                return false;
            }

            int prev = n & 1; // true => 1, false => 0
            n >>= 1;

            while (n > 0) {

                if (prev == (n & 1)) {
                    return false;
                }

                prev = n & 1;
                n >>= 1;
            }

            return true;
        }
    }
}

Java

class Solution {
    public boolean hasAlternatingBits(int n) {
        if (n <= 2)
            return true;
        else if (n <= 4)
            return false;
        int prevBit = n & 1;
        n >>= 1;
        while (n > 0) {
            int curBit = n & 1;
            if (prevBit == curBit)
                return false;
            prevBit = curBit;
            n >>= 1;
        }
        return true;
    }
}

All Problems

All Solutions