Welcome to Subscribe On Youtube

693. Binary Number with Alternating Bits

Description

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

 

Example 1:

Input: n = 5
Output: true
Explanation: The binary representation of 5 is: 101

Example 2:

Input: n = 7
Output: false
Explanation: The binary representation of 7 is: 111.

Example 3:

Input: n = 11
Output: false
Explanation: The binary representation of 11 is: 1011.

 

Constraints:

  • 1 <= n <= 231 - 1

Solutions

  • class Solution {
        public boolean hasAlternatingBits(int n) {
            n ^= (n >> 1);
            return (n & (n + 1)) == 0;
        }
    }
    
  • class Solution {
    public:
        bool hasAlternatingBits(int n) {
            n ^= (n >> 1);
            return (n & ((long) n + 1)) == 0;
        }
    };
    
  • class Solution:
        def hasAlternatingBits(self, n: int) -> bool:
            n ^= n >> 1
            return (n & (n + 1)) == 0
    
    
  • func hasAlternatingBits(n int) bool {
    	n ^= (n >> 1)
    	return (n & (n + 1)) == 0
    }
    
  • impl Solution {
        pub fn has_alternating_bits(n: i32) -> bool {
            let t = n ^ (n >> 1);
            (t & (t + 1)) == 0
        }
    }
    
    

All Problems

All Solutions