博客
关于我
693 交替位二进制数(位运算)
阅读量:356 次
发布时间:2019-03-04

本文共 714 字,大约阅读时间需要 2 分钟。

1. 问题描述:

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

示例 1:

输入:n = 5

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

示例 2:

输入:n = 7

输出:false
解释:7 的二进制表示是:111

示例 3:

输入:n = 11

输出:false
解释:11 的二进制表示是:1011

示例 4:

输入:n = 10

输出:true
解释:10 的二进制表示是:1010

示例 5:

输入:n = 3

输出:false

提示:

  • 1 <= n <= 2 ^ 31 - 1

2. 思路分析:

由题目可以知道我们需要获取当前十进制数字n对应的二进制数字上的各个位,然后依次检查相邻的两个数字是否相同,获取二进制数字上的各个位可以使用移位运算来获取,并且我们需要使用一个变量来记录上一次的位置对应的数字这样才可以进行相邻位置数字的比较

3. 代码如下:

class Solution:    def hasAlternatingBits(self, n: int) -> bool:        p = n & 1        # 除以2用来这样后面获取最后一位的数字        n >>= 1        while n > 0:            t = n & 1            # 通过异或运算来检查相邻的两个数字是否是相同            if not t ^ p: return False            n >>= 1            p = t        return True

 

转载地址:http://ahgr.baihongyu.com/

你可能感兴趣的文章
js-禁止右键菜单代码、禁止复制粘贴代码
查看>>
SpringBoot中使用Mybatis访问MySQL数据库(使用xml方式)
查看>>
数组--Go语言学习笔记
查看>>
Redis (三)——Linux 上安装 Redis
查看>>
java 重写(override)和重载(overload)区别
查看>>
java 多态类型转换
查看>>
常用正则表达式
查看>>
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
查看>>
Tomcat6中web项目部署路径webapps和wtpwebapps的区别
查看>>
Java判断字符串是否为金额
查看>>
软件架构-zookeeper快速入门
查看>>
angr学习笔记(7)(malloc地址单元符号化)
查看>>
「CF149D」括号涂色 区间DP好题
查看>>
树状数组 模板总结
查看>>
「NOI2015」程序自动分析 并查集题解
查看>>
[JSOI2008]Blue Mary的战役地图 Hash题解
查看>>
结构型设计在工作中的一些经验总结
查看>>
如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
查看>>
2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
查看>>
Netty4服务端入门代码示例
查看>>