【LeetCode】C++ :简单题 - 位运算 693. 交替位二进制数

693. 交替位二进制数

难度简单90

给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。

示例 1:

输入:n = 5
输出:true
解释:5 的二进制表示是:101

示例 2:

输入:n = 7
输出:false
解释:7 的二进制表示是:111.

示例 3:

输入:n = 11
输出:false
解释:11 的二进制表示是:1011.

示例 4:

输入:n = 10
输出:true
解释:10 的二进制表示是:1010.

示例 5:

输入:n = 3
输出:false

提示:

  • 1 <= n <= 231 - 1

位运算 + 数组 

class Solution {
public:
    bool hasAlternatingBits(int n) {
        uint32_t num = n;
        vector<int> vec;
        while(num != 0){
            vec.push_back(num & 1);
            num = num >> 1;
        }
        for(int i = 1; i < vec.size(); i++){
            if(vec[i] == vec[i-1]){
                return false;
            }
        }
        return true;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_44566432/article/details/113773555