描述
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x
分析
4^x = 2^(2x)
- 先判断是否是2的次幂
- 判断2的次幂的指数是不是偶数。
特殊情况0,直接返回false。
也可以理解为,只要n的二进制1只有一个且只出现在偶次位置,则n一定也是4的幂次。
class Solution {
public boolean isPowerOfFour(int n) {
int index = 0;
boolean flag = false;
if(n == 0){
return false;
}
for(int i = 0; i < 32; i++){
if((n >> i & 1 ) == 1){
if(flag){
return false;
}else{
flag = true;
index = i;
}
}
}
if((index & 1) == 1){
return false;
}
return true;
}
}