342. Power of Four
题目描述和难度
- 题目描述:
给定一个整数 (32位有符整数型),请写出一个函数来检验它是否是4的幂。
示例:
当 num = 16 时 ,返回 true 。 当 num = 5时,返回 false。
问题进阶:你能不使用循环/递归来解决这个问题吗?
致谢:
特别感谢 @yukuairoy 添加这个问题并创建所有测试用例。
- 题目难度:简单。
- 英文网址:342. Power of Four 。
- 中文网址:342. 4的幂 。
思路分析
求解关键:
1、列出 、 、 、 等等,找出规律;
,表示成二进制就是
,
后面
个“
”;
,表示成二进制就是
,
后面
个“
”;
,表示成二进制就是
,
后面
个“
”;
,表示成二进制就是
,
后面
个“
”;
,表示成二进制就是
,
后面
个“
”。
2、如果是负数,直接返回 false;
3、使用位运算的与运算去做判断;
4、不要忘记转换成二进制以后,后面跟的 0 是偶数,所以原来的位数一定是奇数。
参考解答
参考解答1
public class Solution {
public boolean isPowerOfFour(int num) {
if (num <= 0) {
return false;
}
String binaryString = Integer.toBinaryString(num);
// System.out.println(binaryString);
int len = binaryString.length();
return len % 2 == 1 && (num & 1 << (len - 1)) == num;
}
public static void main(String[] args) {
Solution solution = new Solution();
boolean powerOfFour = solution.isPowerOfFour(-2147483648);
System.out.println(powerOfFour);
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0342-power-of-four ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 [email protected] 。
.label-warning {
background-color: #f0ad4e;
}
.label-success {
background-color: #5cb85c;
}
.label-danger {
background-color: #d9534f;
}
.label {
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: 700;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
}