693. 交替位二进制数

Posted lgz0921

tags:

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

题目链接:https://leetcode-cn.com/problems/binary-number-with-alternating-bits/

思路:n右移一位,然后异或它本身。最后用前面得到的结果一下结果加一,判断是否等于零即可。等于零是true,否则是false。

举例:

n=5    二进制:00000101  这里只用8位二进制解释即可

右移一位:00000101 shr 1 = 00000010

两数异或:00000101 xor 00000010 = 00000111   这个值加一:00000111 + 1 = 00001000

两数与:00000111 and 00001000 == 0

这个值等于0,返回true~~~~

 

n=4    二进制:00000100  这里只用8位二进制解释即可

右移一位:00000100 shr 1 = 00000010

两数异或:00000100 xor 00000010 = 00000110   这个值加一:00000110 + 1 = 00000111

两数与:00000110 and 00000111 != 0

这个值不等于0,返回false~~~~

上代码:

class Solution {
    fun hasAlternatingBits(n: Int): Boolean {
        val num = n shr 1 xor n
        return num and num + 1 == 0
    }
}

 

以上是关于693. 交替位二进制数的主要内容,如果未能解决你的问题,请参考以下文章

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

LeetCode 693 交替位二进制数[位运算 二进制] HERODING的LeetCode之路

693. 交替位二进制数

Leetcode之693.交替位二进制数

剑指 Offer 15. 二进制中1的个数693. 交替位二进制数

LeetCode 693. 交替位二进制数 / 2024. 考试的最大困扰度 / 1606. 找到处理最多请求的服务器