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

    「快乐数」定义为:

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

    如果 n 是快乐数就返回 true ;不是,则返回 false

    示例 1:

    1. 输入:n = 19
    2. 输出:true
    3. 解释:
    4. 12 + 92 = 82
    5. 82 + 22 = 68
    6. 62 + 82 = 100
    7. 12 + 02 + 02 = 1

    示例 2:

    1. 输入:n = 2
    2. 输出:false

    提示:

    • 1 <= n <= 231 - 1
    1. class Solution {
    2. public:
    3. bool isHappy(int n) {
    4. set<int> s; //存储循环中出现过的数
    5. while (1)
    6. {
    7. int sum0=nsum(n);
    8. if(sum0==1) return true;
    9. //循环中出现过这个数
    10. if(s.find(sum0)!=s.end()) return false;
    11. s.insert(sum0);
    12. n=sum0;
    13. }
    14. }
    15. int nsum(int m){
    16. int sum=0;
    17. while (m!=0)
    18. {
    19. sum+=(m%10)*(m%10);
    20. m/=10;
    21. }
    22. return sum;
    23. }
    24. };