1. 程式人生 > >leetcode-3的冪(JavaScript)

leetcode-3的冪(JavaScript)

給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。

示例 1:
輸入: 27
輸出: true

示例 2:
輸入: 0
輸出: false

示例 3:
輸入: 9
輸出: true

示例 4:
輸入: 45
輸出: false

進階:
你能不使用迴圈或者遞迴來完成本題嗎?


思路:

使用迴圈很簡單,一直除以3,最後得到1,就是3的冪。但這道題還有更快的解法。

先把數字轉換成3進位制的字串,如果是3的冪,那麼這個字串一定是一個1,和若干個0.

1:  '1'
3:  '10'
9:  '100'
27: '1000'

所以,只需判斷字串的第一個字元是否為1,後面的字串使用弱相等(==)是否等於false.

/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfThree = function(n) {
  let str = n.toString(3);
  if (str[0] === '1' && str.slice(1) == false) return true
  else return false
};