ID | Title | Difficulty | |
---|---|---|---|
Loading... |
693. Binary Number with Alternating Bits
Easy
LeetCode
Bit Manipulation
Problem
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 <= 2^{31} - 1$
Code
n 1 0 1 0 1 0 1 0
n >> 1 0 1 0 1 0 1 0 1
n ^ n>>1 1 1 1 1 1 1 1 1
不能用&, 比如n=4时, 就不成立
n 1 1 1 1 1 1 1 1
n + 1 1 0 0 0 0 0 0 0 0
n & (n+1) 0 0 0 0 0 0 0 0
class Solution {
public boolean hasAlternatingBits(int n) {
n = n ^ (n>>1);
return (n & n+1) == 0;
}
}
按 <- 键看上一题!
692. Top K Frequent Words
按 -> 键看下一题!
694. Number of Distinct Islands