Leetcode-693. 交替位二进制数

Leetcode-693. 交替位二进制数,第1张

链接

693. 交替位二进制数

题目

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


示例

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

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

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

说明
  • 1 <= n <= 2e31 - 1
思路

采用除后取余的办法将数字n转成2进制,然后对每一位和其相邻位进行判断。


C++ Code
class Solution {
public:
    bool hasAlternatingBits(int n) {
        vector res;
        while(n)
        {
            int cur=n%2;
            res.push_back(cur);
            n/=2;
        }
        for(int i=0;i

其实还有更省空间的做法:

class Solution {
public:
    bool hasAlternatingBits(int n) {
        while(n>0)
        {
            if(n%2==(n/2)%2) return false;
            n/=2;
        }
        return true;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/562278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)