题目描述
首先是循环来实现
class Solution {
public boolean isPowerOfFour(int num) {
if(num == 0)
return false;
if(num == 1){
return true;
}else {
while (true) {
if(num % 4 != 0 )
return false;
num = num/4;
if(num == 1){
return true;
}
if(num == 0)
return false;
}
}
}
}
感觉又是考验数学能力的时候,不是很懂这段代码
class Solution {
public boolean isPowerOfFour(int num) {
return num > 0 && (Math.sqrt(num) - (int)Math.sqrt(num)) < 1e-9 && 32768 % (int)Math.sqrt(num) == 0 ;
}
}
考验的是你的思考和扩展能力,比如一个数是四的幂次,那么一定是二的幂次,下面这个代码用的就是这个原理
比如:
class Solution {
public boolean isPowerOfFour(int num) {
if((num & (num - 1)) != 0){
return false;
}
return (0x55555555 & num) == 0 ? false:true;
}
}