题目要求
Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.
题目分析及思路
给定一个正整数, 判断它的二进制形式是否是 01 交替出现. 如果是则返回 True, 否则返回 False. 可以先获得该数的二进制形式, 之后利用切片分别获得其奇数位和偶数位的值. 若全为 1 或 0, 则是满足要求的数.
python 代码
- class Solution:
- def hasAlternatingBits(self, n: int) -> bool:
- b_str = bin(n)
- b_substr = b_str[2:]
- evens = b_substr[0::2]
- odds = b_substr[1::2]
- if evens.count('1') == len(evens) and odds.count('0') == len(odds):
- return True
- else:
- return False
来源: http://www.bubuko.com/infodetail-2981041.html