342. Power of Four

Description

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?

Solution

Solution 1

/**
 * @param {number} num
 * @return {boolean}
 */
var isPowerOfFour = function(num) {
    "use strict";
    if (num === 0) {
        return false;
    }
    while (num % 4 === 0) {
        num /= 4;
    }
    return num === 1;
};

Solution 2

/**
 * @param {number} num
 * @return {boolean}
 */
var isPowerOfFour = function(num) {
    "use strict";
    return num.toString(4).replace(/0/g, "") === "1";
};

Solution 3

/**
 * @param {number} num
 * @return {boolean}
 */
var isPowerOfFour = function(num) {
    "use strict";
    return (num & (num-1)) === 0 && (num & 0x55555555) !== 0;
};

results matching ""

    No results matching ""