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. 交替位二进制数的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 693 交替位二进制数[位运算 二进制] HERODING的LeetCode之路