解题思路
刚开始题目理解错了,不过仔细审题后轻松解决
- 首先把特殊数字处理了,即非正数和1
- 将要处理的数字num & (num-1)。这样可以得出其总共有几个1(二进制)
- 若只有最高位为1,那再判断其二进制0的总个数是否是2的倍数。(4的二进制是两个0)。
- 得出答案。
解题代码
public class Solution {
public boolean isPowerOfFour(int num) {
if(num<=0){
return false;
}
if(num ==1 ) return true;
int a = num & (num-1);
if(a==0&&(((Integer.toBinaryString(num)).length()-1)&1)==0) return true;
else return false;
}
}