列表

详情


693. 交替位二进制数

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

 

示例 1:

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

示例 2:

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

示例 3:

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

 

提示:

相似题目

位1的个数

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool hasAlternatingBits(int n) { } };

rust 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-09-15 10:06:54

impl Solution {
    pub fn has_alternating_bits(mut n: i32) -> bool {
        let mut prev = 2;
        while n != 0 {
            let mut cur = n % 2;
            if cur == prev {
                return false;
            }
            prev = cur;
            n = n / 2;
        }
        true
    }
}

python3 解法, 执行用时: 40 ms, 内存消耗: 15.8 MB, 提交时间: 2023-09-15 10:04:18

class Solution:
    def hasAlternatingBits(self, n: int) -> bool:
        prev = 2
        while n:
            cur = n % 2
            if cur == prev:
                return False
            prev = cur
            n //= 2
        return True

golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-09-15 10:04:03

// 模拟
func hasAlternatingBits(n int) bool {
    for pre := 2; n != 0; n /= 2 {
        cur := n % 2
        if cur == pre {
            return false
        }
        pre = cur
    }
    return true
}

javascript 解法, 执行用时: 60 ms, 内存消耗: 41 MB, 提交时间: 2023-09-15 10:03:45

/**
 * @param {number} n
 * @return {boolean}
 */
var hasAlternatingBits = function(n) {
    const a = n ^ (n >> 1);
    return (a & (a + 1)) === 0;
};

java 解法, 执行用时: 0 ms, 内存消耗: 38.2 MB, 提交时间: 2023-09-15 10:03:27

class Solution {
    public boolean hasAlternatingBits(int n) {
        int num = n ^ (n >> 1);
        return (num & (num + 1)) == 0;
    }
}

rust 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-09-15 10:01:05

impl Solution {
    pub fn has_alternating_bits(n: i32) -> bool {
        let num = n ^ (n >> 1);
        num & (num+1) == 0
    }
}

python3 解法, 执行用时: 48 ms, 内存消耗: 15.8 MB, 提交时间: 2023-09-15 10:00:30

class Solution:
    def hasAlternatingBits(self, n: int) -> bool:
        num = n ^ (n >> 1)  # n 和 n/2 异或,如果n是交错的,那n必定是2^x - 1
        return num & (num+1) == 0  # 如果n是交错的,那么n & (n + 1) 必定等于0

golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-06-02 11:23:18

func hasAlternatingBits(n int) bool {
    num := n ^ (n >> 1)
    return num & (num+1) == 0
}

php 解法, 执行用时: 8 ms, 内存消耗: 15.1 MB, 提交时间: 2021-05-14 17:50:56

class Solution {

    /**
     * @param Integer $n
     * @return Boolean
     */
    function hasAlternatingBits($n) {
        $num = $n ^ ($n >> 1);
        return ( $num & ($num + 1)) == 0;
    }
}

上一题