The challenge

Given an integer n, return true if it is a power of three. Otherwise, return false.

An integer n is a power of three, if there exists an integer x such that n == 3<sup>x</sup>.

Example 1:

Input: n = 27
Output: true

Example 2:

Input: n = 0
Output: false

Example 3:

Input: n = 9
Output: true

Example 4:

Input: n = 45
Output: false

Constraints:

  • -2<sup>31</sup>&nbsp;<= n <= 2<sup>31</sup>&nbsp;- 1

The solution in Java code

Using Math.log(n) divided by Math.log(3) we can get a double back which when rounded using Math.round will result in a 3 being returned if the input number is a power of 3.

We can then compare the power of that to the input value to return a resultant boolean.

class Solution {
    public boolean isPowerOfThree(int n) {
        // catch the edge case
        if (n==0) return false;
        
        // use the built in Maths utils
        return n == Math.pow(3, Math.round(Math.log(n)/Math.log(3)));
        
    }
}