326. Power of Three
自己写的:(java)
public class Solution {
public boolean isPowerOfThree(int n) {
double logarithm = Math.log10(n)/Math.log10(3);
System.out.println(logarithm);
if(logarithm == (int) logarithm){
return true;
}
else {
return false;
}
}
}
更简洁算法:
1、
public class Solution {
public boolean isPowerOfThree(int n) {
// 1162261467 is 3^19, 3^20 is bigger than int
return ( n>0 && 1162261467%n==0);
}
2、
public boolean isPowerOfThree(int n) {
return (Math.log10(n) / Math.log10(3)) % 1 == 0;
}
3、
public boolean isPowerOfThree(int n) {
return Integer.toString(n, 3).matches("10*");
}
要注意的问题:
使用log()函数是以e为底的,在n为243时会出现误差。log(243)/log(3) = 4.999999999999999。因此这里只能选择以10为底的函数。