分析
一共有2種比較巧妙的方法缤言,前提是首先確定是2的冪次宝当。
- 4的冪次減1可以被3整除。
- 檢查數(shù)字的偶數(shù)位是否有1墨闲。
class Solution {
public:
bool isPowerOfFour(int num) {
return num > 0 && (num & (num - 1)) == 0 && (num - 1) % 3 == 0;
}
};
0xaaaaaaaa
表示二進制數(shù)1010 1010 1010 1010 1010 1010 1010 1010今妄,采用&運算可以探測到偶數(shù)位是否存在1郑口。
class Solution {
public:
bool isPowerOfFour(int num) {
return num > 0 && (num & (num - 1)) == 0 && (num & 0xaaaaaaaa) == 0;
}
};