给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true
示例 2:
输入: 5
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
class Solution {
public:
bool isPowerOfFour(int num) {
while ((num != 0) && (num % 4 == 0)) {
num /= 4;
}
return num == 1;
}
};
class Solution1 {
public:
bool isPowerOfFour(int num) {
if (num <= 0)
return false;
// 先判断是否是2的幂
if ((num&num - 1) != 0)
return false;
if ((num & 0x55555555) == num)
return true;
return false;
}
};
链接:https://leetcode-cn.com/problems/power-of-four