
693 交替位二进制数(位运算)
发布日期:2021-05-07 21:55:24
浏览次数:12
分类:技术文章
本文共 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
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年03月24日 04时37分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
22 岁毕业做程序员的「普通」人,50 岁时的人生轨迹是怎样的?
2019-03-04
java稀疏数组
2019-03-04
全球数字货币加快研发
2019-03-04
数字化助力金融科技,实现产业良性循环
2019-03-04
2020-11-23(彻底理解KMP)
2019-03-04
angr学习笔记(7)(malloc地址单元符号化)
2019-03-04
windows环境利用start命令实现微信多开
2019-03-04
「CF149D」括号涂色 区间DP好题
2019-03-04
树状数组 模板总结
2019-03-04
「NOI2015」程序自动分析 并查集题解
2019-03-04
[JSOI2008]Blue Mary的战役地图 Hash题解
2019-03-04
结构型设计在工作中的一些经验总结
2019-03-04
如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
2019-03-04
2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
2019-03-04
“编程能力差,90%输在了数学上!”CTO:多数程序员都是瞎努力!
2019-03-04
我是程序员,我用这种方式铭记历史
2019-03-04
CSDN湘苗培优|保持热情,告别平庸
2019-03-04
YbtOJ hash和hash表课堂过关 例1 字符串哈希【hash】
2019-03-04
前后端数据交互之表单
2019-03-04
剑指offer JZ21 栈的压入弹出序列
2019-03-04