Leetcode刷题笔记python-----交替位二进制数

交替位二进制数

题目

给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。

示例 1:

输入: 5
输出: True
解释:
5的二进制数是: 101
示例 2:

输入: 7
输出: False
解释:
7的二进制数是: 111
示例 3:

输入: 11
输出: False
解释:
11的二进制数是: 1011
示例 4:

输入: 10
输出: True
解释:
10的二进制数是: 1010


解答

思路:

  1. 将数字转为二进制
  2. 将二进制数转化为字符型
  3. 判断字符‘11’或着‘00’在不在

代码:

class Solution:
    def hasAlternatingBits(self, n):
        """
        :type n: int
        :rtype: bool
        """
        #转变为二进制,‘00’或者‘11’在不在
        double=[]
        x=0
        while n>0:
            if pow(2,x)<=n:
                x+=1
            else:
                n=n-pow(2,x-1)
                double.append(x-1)
                x=0
        res=[0]*(max(double)+1)
        for i in double:
            res[i]=1
        j=''
        for i in res:
            j+=str(i)
        if '11'in j:
            return False
        elif '00' in j:
            return False
        else:
            return True

结果:15%
自己也感觉太复杂了

需要改进!!!

猜你喜欢

转载自blog.csdn.net/sinat_29350597/article/details/82911860