693. Binary Number with Alternating Bits

来源:互联网 发布:2016成都程序员工资 编辑:程序博客网 时间:2024/06/05 10:24

Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.

Example 1:

Input: 5Output: TrueExplanation:The binary representation of 5 is: 101

Example 2:

Input: 7Output: FalseExplanation:The binary representation of 7 is: 111.

Example 3:

Input: 11Output: FalseExplanation:The binary representation of 11 is: 1011.

Example 4:

Input: 10Output: TrueExplanation:The binary representation of 10 is: 1010.

参加了LC一周一度的编程大赛,结果。。。并不重要。

这个题当时想法是转换成字符串,再判断是不是回文字符串,但是发现这样没有办法判断“11111” 这样的字符串,于是忽然想到了XO操作,从最右边开始判断。 

直接上代码吧:

class Solution {public:    bool hasAlternatingBits(int n) {        int last = n & 1;        n = n >> 1;        int flag = 1;        while (n != 0) {            int dig = n & 1;            n = n >> 1;            flag &= dig ^ last;                        last = dig;        }        return flag == 1 ? true : false;    }};



原创粉丝点击