leetcode-693:交替位二进制数

简介: leetcode-693:交替位二进制数

题目

题目链接

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

示例 1:

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

示例 2:

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

示例 3:

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

解题

方法一: 遍历

class Solution {
public:
    bool hasAlternatingBits(int n) {
        int prev=-1;
        while(n!=0){
            int m=n&1;
            if((prev^m)==0) return false;
            prev=m;
            n>>=1;
        }
        return true;
    }
};

方法二:位运算

class Solution {
public:
    bool hasAlternatingBits(int n) {
        long x=n^(n>>1);
        return (x&(x+1))==0;
    }
};


相关文章
【Leetcode -680.验证回文串Ⅱ -693.交替位二进制数】
【Leetcode -680.验证回文串Ⅱ -693.交替位二进制数】
42 0
【LeetCode】1022. 从根到叶的二进制数之和、563. 二叉树的坡度
1022. 从根到叶的二进制数之和 1022. 从根到叶的二进制数之和
50 0
【Leetcode -617.合并二叉树 -1022.从根到叶的二进制数之和】
【Leetcode -617.合并二叉树 -1022.从根到叶的二进制数之和】
37 0
LeetCode 1689. 十-二进制数的最少数目
如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 。
101 0
|
C++ Python
LeetCode每日一题题解:693. 交替位二进制数-题解-python && C++源代码-经典位运算
LeetCode每日一题题解:693. 交替位二进制数-题解-python && C++源代码-经典位运算
|
Python
LeetCode面试系列 第3天:No.67 - 二进制数求和
LeetCode面试系列 第3天:No.67 - 二进制数求和
148 0
LeetCode面试系列 第3天:No.67 - 二进制数求和
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
4月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
128 2