「 每日一练,快乐水题 」693. 交替位二进制数

Posted 谁吃薄荷糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「 每日一练,快乐水题 」693. 交替位二进制数相关的知识,希望对你有一定的参考价值。

文章目录


🔴力扣原题:

力扣链接:693. 交替位二进制数

🟠题目简述:

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

🟡解题思路:

1.模拟大法;
2.算出n的二进制表示;
3.判断奇数位与偶数位是否一致;
4.0、1位需要不一致;
5.处理只有1位二进制的情况;
6.over;

🟢C++代码:

class Solution 
public:
    bool hasAlternatingBits(int n) 
        
        bool bRet = true;
        vector<int> binaryVec;

        while(n > 0)
        

            binaryVec.push_back(n%2);
            n /= 2;
        

        int num = binaryVec.size();

        // for(auto i : binaryVec)
        // 
        //     cout << i << endl;
        // 

        if(num >=2)
        
            if((binaryVec[0]==binaryVec[1]))
            
                return false;
            

            for(int i = 0; 2*i< num; i++)
                            
                //cout << i << endl;
                if((binaryVec[0] != binaryVec[2*i]))
                
                    bRet = false;
                    break;
                
            

            for(int i = 0; (2*i+1)< num; i++)
                            
                //cout << i << endl;
                if(binaryVec[1] != binaryVec[2*i +1])
                
                    bRet = false;
                    break;
                
            
        

        return bRet;
    
;

🔵结果展示:

以上是关于「 每日一练,快乐水题 」693. 交替位二进制数的主要内容,如果未能解决你的问题,请参考以下文章

「 每日一练,快乐水题 」504. 七进制数

「 每日一练,快乐水题 」717. 1比特与2比特字符

「 每日一练,快乐水题 」717. 1比特与2比特字符

「 每日一练,快乐水题 」287. 寻找重复数

「 每日一练,快乐水题 」剑指 Offer 15. 二进制中1的个数

「 每日一练,快乐水题 」191. 位1的个数