版权声明:此BLOG为个人BLOG,内容均来自原创及互连网转载。最终目的为记录自己需要的内容或自己的学习感悟,不涉及商业用途,转载请附上原博客。 https://blog.csdn.net/bulo1025/article/details/87913934
题目描述
给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。
示例 1:
输入: 5
输出: True
解释:
5的二进制数是: 101
示例 2:
输入: 7
输出: False
解释:
7的二进制数是: 111
示例 3:
输入: 11
输出: False
解释:
11的二进制数是: 1011
** 示例 4:**
输入: 10
输出: True
解释:
10的二进制数是: 1010
思路分析
- 用 res 记录输入 n 所对应的二进制数并转换成字符串, 可以直接调用bin()函数,这样效率更高
- 遍历 res 字符串中所有元素,如果当前值和前一个值相同,那么返回False
代码示例
class Solution(object):
def hasAlternatingBits(self, n):
"""
:type n: int
:rtype: bool
"""
if n == 1:
return True
res = ''
while n: # res = str(bin(n))
res += str(n%2)
n //= 2
for i in range(1,len(res)):
if res[i] == res[i-1]:
return False
return True