给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。
示例 1:
输入:n = 5
输出:true
解释:5 的二进制表示是:101
示例 2:
输入:n = 7
输出:false
解释:7 的二进制表示是:111.
示例 3:
输入:n = 11
输出:false
解释:11 的二进制表示是:1011.
提示:
1 <= n <= 231 - 1
class Solution {public boolean hasAlternatingBits(int n) {boolean flag0 = false, flag1 = false; //上一个是0还是1//交替出现while (n > 0) {if ((n & 1) == 1) {if (flag1) return false;flag1 = true; flag0 = false;} else {if (flag0) return false;flag0 = true; flag1 = false;}n >>= 1;}return true;}}
位运算
class Solution {public boolean hasAlternatingBits(int n) {while (n > 0) {int u = n & 1;//跟前面一位进行比较if ((n >> 1 & 1) == u) return false;n >>= 1;}return true;}}
