3 的幂-简单
难度:简单
题目描述:
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例:
输入: 27;
输出: true;
输入: 0;
输出: false;
1
2
3
4
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
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
2
3