louzhedong / blog

前端基础,深入以及算法数据结构
934 stars 84 forks source link

阿姆斯特朗数 #169

Open louzhedong opened 5 years ago

louzhedong commented 5 years ago

习题

出处 LeetCode 算法第5028题

假设存在一个 k 位数 N,其每一位上的数字的 k 次幂的总和也是 N,那么这个数是阿姆斯特朗数。

给你一个正整数 N,让你来判定他是否是阿姆斯特朗数,是则返回 true,不是则返回 false

示例 1:

输入:153
输出:true
示例: 
153 是一个 3 位数,且 153 = 1^3 + 5^3 + 3^3。

示例 2:

输入:123
输出:false
解释: 
123 是一个 3 位数,且 123 != 1^3 + 2^3 + 3^3 = 36。

提示:

  1. 1 <= N <= 10^8

思路

暴力计算

解答

/**
 * @param {number} N
 * @return {boolean}
 */
var isArmstrong = function(N) {
    var strN = N.toString();
    var length = strN.length;
    var target = 0;
    for (var i = 0; i < length; i++) {
      target += help(Number(strN[i]),length);
    }
    if (target == N) {
      return true;
    }
    return false;
};

function help(number, p) {
  var result = 1;
  for (var i = 0;i < p; i++) {
    result *= number;
  }
  return result;
}