1. 程式人生 > >【LeetCode】693. Binary Number with Alternating Bits

【LeetCode】693. Binary Number with Alternating Bits

693. Binary Number with Alternating Bits

Problem

給一個正整數,判斷他的二進位制形式 是否是0,1交替的

Example

5(101) true
7(111) false
10(1010) true
11(1011)false

Solution

如果是最低位為0,如1010,先右移一位,方便計算
那偶數位一定不為0,奇數位一定為0

    public boolean hasAlternatingBits
(int n) { if ((n & 1) == 0) n >>= 1;//右移一位,方便後面計算 //odd奇數位,even偶數位 for (long odd = 2, even = 1; even < n; odd <<= 2, even <<= 2) {//一次判斷奇偶兩位 //(even & n) == 0,偶數位為0 或 (odd & n) != 0,奇數位不為0,返回false if ((even & n) == 0 || (odd & n)
!= 0) return false; } return true; }