202. 快乐数(JavaScript)
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19
输出: true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
思路:
这道题思路较清晰,计算正整数 n 的各位的平方和 sum,若 sum等于1,则返回true,若不等,则将sum赋值给n,重复上述步骤。
不过有可能sum始终不为1,我们设置一个最大循环次数,次数使用完时,sum还是不为1,就说明这个正整数不是快乐数。
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
var sum,
count = 50; // 最多循环50次
while (count >= 0) {
var remainder; // 余数
sum = 0;
while (n !== 0) {
remainder = n % 10;
sum += remainder * remainder;
n = parseInt(n / 10);
}
if (sum === 1) return true;
n = sum;
count--;
}
return false;
};