Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.
Example 1:
Input: 5 Output: True Explanation: The binary representation of 5 is: 101
Example 2:
Input: 7 Output: False Explanation: The binary representation of 7 is: 111.
Example 3:
Input: 11 Output: False Explanation: The binary representation of 11 is: 1011.
Example 4:
Input: 10 Output: True Explanation: The binary representation of 10 is: 1010.
含义:让我们判断一个二进制数的1和0是否是交替出现的
1 public boolean hasAlternatingBits(int n) { 2 // char[] chs = Integer.toBinaryString(n).toCharArray(); 3 // if (chs.length<2) return true; 4 // char evenChar = chs[0]; 5 // char oddChar = chs[1]; 6 // for(int i=2;i<chs.length;i++) 7 // { 8 // if (i%2 ==0) 9 // { 10 // if (evenChar != chs[i]) return false; 11 // }else 12 // if (oddChar != chs[i]) return false; 13 // } 14 // return true; 15 int a=n<<1; 16 int b= n^a; 17 char[] chs = Integer.toBinaryString(b).toCharArray(); 18 for (int i=0;i<chs.length-1;i++) if (chs[i] != '1') return false; 19 boolean result = n==(n&b); 20 return result; 21 }