3 的幂-简单

难度:简单

题目描述:
给定一个整数,写一个函数来判断它是否是 3  的幂次方。

示例:

输入: 27;
输出: true;
输入: 0;
输出: false;
1
2
3
4


解题思路:
对 3 取整,如是 3 的幂次方,最终得 1,否则不是 3 的幂次方

var isPowerOfThree = function (n) {
  if (n === 0) return false;
  while (n >= 3) {
    n = n / 3;
  }
  return n === 1;
};
1
2
3
4
5
6
7


转换基底
我们可以把 n 转换为 3 进制字符串利用正则来解决该问题
先来看下转换规则
n = 1 时 ==> 转 3 进制数为 1
n = 3 时 ==> 转 3 进制数为 10
n = 9 时 ==> 转 3 进制数为 100
n = 27 时 ==> 转 3 进制数为 1000
...
很明显可以看出 第一位 为 1 其余位为 0 或空的 3 进制数 即为 3 的幂
由此可以得到正则 /^10*$/

var isPowerOfThree = function (n) {
  return /^10*$/.test(n.toString(3));
};
1
2
3
最后更新时间: 5/16/2020, 9:06:40 PM