0
点赞
收藏
分享

微信扫一扫

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


文章目录

  • ​​🔴力扣原题:​​
  • ​​🟠题目简述:​​
  • ​​🟡解题思路:​​
  • ​​🟢C++代码:​​
  • ​​🔵结果展示:​​

🔴力扣原题:

​​力扣链接: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. 交替位二进制数_leetcode


举报

相关推荐

0 条评论