LeetCode 342 [Power of Four]

原题

给出一个整数 (32 位), 写出一个函数判断它是不是4的次方数

样例:
给出 num = 16, 返回 true.
给出 num = 5, 返回 false.

解题思路

  • 如果一个数是4的次方数要满足两点
  • 第一:这个数一定是2的次方数 => num & (num - 1) == 0
  • 第二: 二进制中0的个数是偶数个,比如4的二进制是100

因为满足第一条,所以这个数的二进制一定是1后面跟几个0,为了保证0为偶数个,总体长度应为奇数个

完整代码

class Solution(object):
    def isPowerOfFour(self, num):
        """
        :type num: int
        :rtype: bool
        """
        return num > 0 and num & (num - 1) == 0 and len("{0:b}".format(num)) % 2 == 1

你可能感兴趣的:(LeetCode 342 [Power of Four])