Skip to content

Latest commit

 

History

History
95 lines (68 loc) · 1.85 KB

File metadata and controls

95 lines (68 loc) · 1.85 KB

中文文档

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.

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

Solutions

Python3

class Solution:
    def hasAlternatingBits(self, n: int) -> bool:
        n = (n ^ (n >> 1)) + 1
        return (n & (n - 1)) == 0

Java

class Solution {
    public boolean hasAlternatingBits(int n) {
        n = (n ^ (n >> 1)) + 1;
        return (n & (n - 1)) == 0;
    }
}

C++

class Solution {
public:
    bool hasAlternatingBits(int n) {
        n ^= (n >> 1);
        return (n & ((long) n + 1)) == 0;
    }
};

...