题目
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4^x
思路
和判断2的幂差不多,只不过4的幂比2的更加特殊而已。将1,4,16,64…转换为二进制后可以发现:
一个数如果是4的幂,它的二进制形式中1的个数只有1个,而0的个数一定是偶数个。
代码
class Solution {
public boolean isPowerOfFour(int n)
{
int countZero=0;
int countOne=0;
while (n>0)
{
if ((n&1)==1)
{
++countOne;
if (countOne>1)
return false;
}
else
++countZero;
n>>=1;
}
return countOne==1 && countZero%2==0;
}
}
结果
简单题,练一练思维!(其实已经两天的每日一题没a了!)