对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果 可以变为 1,那么这个数就是快乐数。
如果 n 是快乐数就返回 true ;不是,则返回 false 。
示例 1:
输入: n = 19
输出: true
解释: 12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
提示:
1 <= n <= 2的31次方 - 1
代码思路
哈希集合,把所有的和存储起来, 如果出现了重复就证明不是快乐数,就会无限循环
代码展示
const isHappy = n=>{
let set = new Set()
//n是一个数字类型的,数字类型不能进行转换
//转化成字符串
n+='';
let sum = 0;
while(sum!=1){
sum = 0;
for(let i = 0;i < n.length; i++){
sum += n[i] * n[i]
}
if(set.has(sum)) return false;
n = sum + '';
set.add(sum)
}
return true
}