0
点赞
收藏
分享

微信扫一扫

day19//快乐数

得一道人 2022-04-25 阅读 33
c++

什么是快乐数?

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

class Solution {

public:

        //定义一个方法用来获取一个数n的每个位数上的平方和

    int getn(int n)

    {

        int sum = 0;

        while(n!=0)

        {

            sum+=(n%10)*(n%10);

            n=n/10;

        }

        return sum;        //返回的sum即为各位数上的平方和

    }

    //定义一个判断是否是快乐数的方法

    bool isHappy(int n) {

            unordered_set<int>set;        //定义集合

            while(1)        //注意:这里是无条件进入循环,因为后面会一直调用上面的getn()函数,直到找到或找不到快乐数为止

        {

            int sum = getn(n);        //先获取到各位数的平方和

            if(sum==1)

            {

                return true;        //若sum为1,则为快乐数

            }

                if(set.find(sum)!=set.end())        //若查找的sum值在之前就出现过,说明sum重复出现,直接return false

                {

                    return false;

                }

                else

                {

                    set.insert(sum);        //否则将该sum放进set集合中,用于接下来的循环判断

                }

                n = sum;        //给n赋值,再次调用getn()函数获取此时的新sum值

         }

    }

};

举报

相关推荐

day19

寒假:Day19

day19知识汇总

力扣Day19

Day19 Java方法重载

0 条评论