给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1 输出: true 解释: 20 = 1
示例 2:
输入: 16 输出: true 解释: 24 = 16
示例 3:
输入: 218 输出: false
解法1:
思路:一直除以2,最后得到1即为2的幂
代码实现:
class Solution {
public static boolean isPowerOfTwo(int n) {
if (n<=0)
return false;
while (n%2==0)
{
n/=2;
}
if (n==1)
return true;
return false;
}
}
解法2:
思路:将原数转为二进制串,检索二进制串中有多少个1,如果是一个,那就证明是2的幂。
代码实现:
class Solution {
public static boolean isPowerOfTwo(int n) {
if (n<0)
return false;
String binStr = Integer.toBinaryString(n);
int count=0;
for (int i=0;i<binStr.length();i++)
if (binStr.charAt(i)=='1')
count++;
if (count!=1)
return false;
return true;
}
}