LeetCode 693. Binary Number with Alternating Bits

Description

https://leetcode.com/problems/binary-number-with-alternating-bits/

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.

Example 4:

Input: n = 10
Output: true
Explanation: The binary representation of 10 is: 1010.

Example 5:

Input: n = 3
Output: false

Constraints:

  • 1 <= n <= 231 - 1

Explanation

Convert n to binary string and check if adjacent letters are different.

Python Solution

class Solution:
    def hasAlternatingBits(self, n: int) -> bool:
        bin_n = bin(n)
        
        prev = None
        
        for c in bin_n[2:]:
            if not prev:
                prev = c
            else:
                if c == prev:
                    return False
                prev = c
                
                
        return True
  • Time Complexity: O(N).
  • Space Complexity: O(N).

Leave a Reply

Your email address will not be published. Required fields are marked *