342. Power of Four - jiejackyzhang/leetcode-note GitHub Wiki

Given an integer (signed 32 bits), write a function to check whether it is a power of 4.

Example:

Given num = 16, return true. Given num = 5, return false.

Follow up: Could you solve it without loops/recursion?

与power of three类似。

##Approach 1: with loop

public class Solution {
    public boolean isPowerOfFour(int num) {
        if(num < 1) return false;
        while(num > 1) {
            if(num % 4 != 0) return false;
            num /= 4;
        }
        return true;
    }
}

##Approach 2: without loop 注意到power of four有如下特性:二进制数为1后面偶数个0。 因此可以先将number转换为二进制数表示的string,然后与regular expression pattern进行比较。

public class Solution {
    public boolean isPowerOfFour(int num) {
        return Integer.toBinaryString(num).matches("1(00)*");
    }
}