【路飞】 202. 快乐数 js

344 阅读1分钟

题目:编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」定义为:

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果 可以变为  1,那么这个数就是快乐数。 如果 n 是快乐数就返回 true ;不是,则返回 false 。

解题思路:把n变成一个字符串 用for循环遍历 每个字符串平方相加 再进入循环 如果最后等于1 返回true 说明他是有个快乐数 如果不是返回false 说明它不是一个快乐数

答案

  function getNext(num){ 
    let stringNum = num.toString() 
    let resultNum = 0 
     for(let i = 0;i <stringNum .length;i++) { 
     resultNum += Math.pow(stringNum.charAt(i),2) 
 } 
    return resultNum; 
    }
    //82
     let arr = new Set() 
     let num = 0; 
       while(1){ 
          if(num==0){
            num = getNext(n);
          }else{ 
            num = getNext(num); 
           }
         if(arr.has(num)) return false;
        if(num==1) return true; 
        arr.add(num);
    } };