Given an integer (signed 32 bits), write a function to check whether it is a power of 4.
Given num = 16, return true. Given num = 5, return false.
Could you solve it without loops/recursion?
class Solution {
public:
bool isPowerOfFour(int num) {
while(num){
if(num==1) return true;
if(num%4!=0) return false;
else num=num/4;
}
return false;
}
};
class Solution {
public:
bool isPowerOfFour(int num) {
return num > 0 && (num & (num - 1)) == 0 && (num - 1) % 3 == 0;
}
};
class Solution {
public:
bool isPowerOfFour(int num) {
if(num <= 0)
return false;
else
return ((!(num&(num-1))) && (num & 0x55555555));
}
};
LeetCode-231. Power of Two;
LeetCode-326. Power of Three。
略。